2016-10-15 41 views
1

我有以下map其主要类型是一个匿名struct地图查找匿名结构关键

var data map[struct{ pID, bID int }]string 

问:我怎么会去在data建设的关键实际获取/设置的值?

我已经试过这些,这些都导致编译器错误:

data[{1,2}] = "ok" 
data[{pID: 1, bID 2}] = "ok" 

看来我不能形成文字,而无需类型名称的化合物,但没有类型名称。


此相关的问题采用了anymous struct作为map,但不是关键

回答

2

您可以创建匿名键以及,像这样:

func main() { 

    data := map[struct{ pID, bID int }]string{} 

    key := struct{pID, bID int}{1, 2} 
    data[key] = "abc" 

    data[struct{pID, bID int}{3, 4}] = "cha cha cha" 


    fmt.Printf("%+v\n\n", data) 

    fmt.Printf("'%s' '%s'\n", data[key], data[struct{pID, bID int}{3, 4}]) 
} 

全文件:https://play.golang.org/p/2q11qiwxuI

+1

这并不特别简单。我想我只会使用一个正常的命名结构。谢谢! –

+1

不客气,是的,它看起来有点冗长,但至少你可以按照你想要的初始化时间使用键值:https://play.golang.org/p/5KxO_SBJ97 –