鉴于这个匿名结构:
var myMap struct {
list map[string]string
someStuff *some.Object
}
我可以在一个声明中初始化list
和someStuff
吗?
这不起作用:
var myMap struct {
list map[string]string = make(map[string]string)
someStuff *some.Object = &some.Object{}
}
答案 0 :(得分:9)
你走了:
var myMap = struct {
list map[string]string
str string
}{
list: map[string]string{"hello":"string"},
str: "myString",
}
你也可以这样做:
var myMap = struct {
list map[string]string
str string
}{map[string]string{"hello":"string"}, "myString"}
一个工作示例: Go PlayGround 。
因此,您声明您的结构,然后在花括号中启动它。 (我是从this old go talk学到的。)
答案 1 :(得分:6)
是的,你可以这样做。看看这个例子:
package main
import "fmt"
func main() {
myMap := struct {
list map[string]string
someStuff interface{}
}{
list: make(map[string]string),
someStuff: 2,
}
fmt.Println(myMap)
}