我有一个包含切片的结构,我想将它用作映射的键。我知道这是不允许的,因为当前没有为 Go 中的切片定义相等性。我也知道我不能覆盖结构的相等性来手动进行切片比较。我的问题是:在这里完成我想要做的事情的最惯用的方法是什么?
这是一些示例代码,使结构更加清晰:
package main
import "fmt"
type InternalStruct struct {
item1, item2 bool
}
type ContainerStruct struct {
internals []InternalStruct
}
func main() {
container1 := ContainerStruct{}
container1.internals = append(container1.internals, InternalStruct{item1: true})
container2 := ContainerStruct{}
container2.internals = append(container2.internals, InternalStruct{item1: true})
m := make(map[ContainerStruct]int)
m[container1] = 10
fmt.Printf("container1 maps to: %d\n", m[container1])
fmt.Printf("container1 maps to: %d\n", m[container2])
}
这段代码不能编译(如预期的那样),但我正在寻找可以输出“10”两次的等效代码。实现这一结果的最佳方法是什么?
qq_笑_17
翻阅古今
相关分类