【问题标题】:Initializing a field inside an anonymous struct初始化匿名结构中的字段
【发布时间】:2015-11-24 20:18:16
【问题描述】:

鉴于此匿名结构:

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{}
}

【问题讨论】:

    标签: go


    【解决方案1】:

    给你:

    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那里学到的。)

    【讨论】:

      【解决方案2】:

      是的,您可以这样做。看这个例子:

      package main
      
      import "fmt"
      
      func main() {
          myMap := struct {
              list       map[string]string
              someStuff interface{}
          }{
              list: make(map[string]string),
              someStuff: 2,
          }
      
          fmt.Println(myMap)
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-07-01
        • 1970-01-01
        • 2020-10-22
        • 2018-01-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多