gpt4 book ai didi

go - 在 Go 中可以用什么来代替类型名称的映射字面量?

转载 作者:IT王子 更新时间:2023-10-29 00:43:28 26 4
gpt4 key购买 nike

在“Go 之旅”中 there是这样的短语

If the top-level type is just a type name, you can omit it from the elements of the literal.

我是 Go 的新手,所以我很好奇什么时候不能省略它?

var m = map[string]Vertex{
"Bell Labs": {40.68433, -74.39967}, //top-level type is omitted
"Google": {37.42202, -122.08408},
}

最佳答案

正如评论者@TimCooper 所提到的,如果 Vertex 是一个接口(interface)类型,那么您将需要显式命名实现该接口(interface)的具体类型,因为编译器无法合理地猜测您指的是哪个实现例如:

type NoiseMaker interface { MakeNoise() string }

type Person struct {}
func (p Person) MakeNoise() string {
return "Hello!"
}

type Car struct {}
func (c Car) MakeNoise() string {
return "Vroom!"
}

// We must provide NoiseMaker instances here, since
// there is no implicit way to make a NoiseMaker...
noisemakers := map[string]NoiseMaker{
"alice": Person{},
"honda": Car{},
}

关于go - 在 Go 中可以用什么来代替类型名称的映射字面量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47579004/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com