初始化匿名结构中的字段

时间:2015-11-24 20:18:16

标签: go

鉴于这个匿名结构:

var myMap struct {
  list       map[string]string
  someStuff *some.Object
}

我可以在一个声明中初始化listsomeStuff吗?

这不起作用:

var myMap struct {
  list       map[string]string = make(map[string]string)
  someStuff *some.Object = &some.Object{}
}

2 个答案:

答案 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)
}