2015-11-24 83 views
1

鑑於這種匿名結構中的一個元素:初始化匿名結構

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

回答

4

在這裏你去:

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瞭解到。)

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