相关疑难解决方法(0)

如何比较struct,slice,map是否相等?

我想检查两个结构是否相等,但有一些问题:

package main

import (
    "fmt"
    "reflect"
)

type T struct {
    X int
    Y string
    Z []int
    M map[string]int
}

func main() {
    t1 := T{
        X: 1,
        Y: "lei",
        Z: []int{1, 2, 3},
        M: map[string]int{
            "a": 1,
            "b": 2,
        },
    }

    t2 := T{
        X: 1,
        Y: "lei",
        Z: []int{1, 2, 3},
        M: map[string]int{
            "a": 1,
            "b": 2,
        },
    }

    fmt.Println(t2 == t1)
    //error - invalid operation: t2 == t1 (struct containing []int cannot be compared)

    fmt.Println(reflect.ValueOf(t2) == …
Run Code Online (Sandbox Code Playgroud)

go go-reflect

99
推荐指数
6
解决办法
9万
查看次数

Golang中的地图集

如果我有一个像这样的结构:

type Foo struct {
  title string
  Tags map[string]string
}
Run Code Online (Sandbox Code Playgroud)

如何保持一套独特的结构?根据我的理解,虽然结构相等是一件事 - 地图平等不是.这意味着我无法比较我的上述结构.因此,我不能将地图实现为设置模式.

我能想到的两个可能有用的选项是:将标签转换为已排序[][]string使用reflect.Deepequal.谁有更好的主意?

struct map set go

5
推荐指数
1
解决办法
2831
查看次数

标签 统计

go ×2

go-reflect ×1

map ×1

set ×1

struct ×1