如何将映射结构声明为全局变量?
How can I declare a struct of maps as a global variable?
为了声明全局映射,我可以在创建时直接初始化它:
package main
var a = map[string]string{}
func main() {
a["hello"] = "world"
}
如何初始化地图的全局结构?类似的做法是不正确的:
var db struct {
Users map[string]User{}
Entries map[string]Entry{}
}
我也试过
var usersMap = map[string]User{}
var entriesMap = map[string]Entry{}
var db struct {
Users usersMap
Entries entriesMap
}
但 usersMap
和 entriesMap
不是类型。
我可以从 main()
中初始化 db
,前提是它仍然是全局的。
结构字段声明需要类型,而不是值。复合文字表达式 map[string]User{}
和 map[string]Entry{}
是值,而不是类型。
通过将字段类型声明与字段值初始化分开来修复:
var db = struct {
Users map[string]User
Entries map[string]Entry
}{
Users: map[string]User{},
Entries: map[string]Entry{},
}
为了声明全局映射,我可以在创建时直接初始化它:
package main
var a = map[string]string{}
func main() {
a["hello"] = "world"
}
如何初始化地图的全局结构?类似的做法是不正确的:
var db struct {
Users map[string]User{}
Entries map[string]Entry{}
}
我也试过
var usersMap = map[string]User{}
var entriesMap = map[string]Entry{}
var db struct {
Users usersMap
Entries entriesMap
}
但 usersMap
和 entriesMap
不是类型。
我可以从 main()
中初始化 db
,前提是它仍然是全局的。
结构字段声明需要类型,而不是值。复合文字表达式 map[string]User{}
和 map[string]Entry{}
是值,而不是类型。
通过将字段类型声明与字段值初始化分开来修复:
var db = struct {
Users map[string]User
Entries map[string]Entry
}{
Users: map[string]User{},
Entries: map[string]Entry{},
}