作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
在“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/
1.字面常量 (1)字面意思是啥就是啥,看其表示就可以知道其值和类型。 (2)有值无名,一用来初始化变量,与一种字符相关联。 #include <stdio.h>int main()
我是一名优秀的程序员,十分优秀!