package main
import "fmt"
func main() {
type Person struct {
Name string
Likes []string
}
var people []*Person
likes := make(map[string][]*Person)
for _, p := range people {
for _, l := range p.Likes {
likes[l] = append(likes[l], p)
}
}
for _, p := range likes["cheese"] {
fmt.Println(p.Name, "likes cheese.")
}
fmt.Println(len(likes["bacon"]), "people like bacon.")
type Student struct {
Name string
Likes []string
}
s := make([]string, 1)
students := Student{
Name: "your name",
Likes: append(s, "footballl", "basketball"),
}
/*students = Student{
Name: "myname",
}*/
sm := map[string]interface{}{
"name": students.Name,
"likes": students.Likes,
}
fmt.Println("sm", sm)
m := make(map[string]int)
m["k1"] = 7
m["k2"] = 13
var mypeople = make(map[string]string)
mypeople["name"] = "your name"
me, exists := mypeople["name"]
fmt.Println("me", me, "exists", exists)
// 初始化 + 赋值一体化
m3 := map[string]string{
"a": "aa",
"b": "bb",
}
// ==========================================
// 查找键值是否存在
if v, ok := m3["a"]; ok {
fmt.Println(v)
} else {
fmt.Println("Key Not Found")
}
//array of map init
m4 := []map[string]interface{}{
map[string]interface{}{
"key1": "valu1",
"key2": "value2",
},
map[string]interface{}{
"key1": "valu3",
"key2": "value4",
},
}
fmt.Println(m4)
fmt.Println("m4[1]", m4[1]["key1"])
//map value is a array of map
m5 := map[string]interface{}{
"nest": m4,
}
fmt.Println(m5)
m6 := make([]map[string]interface{}, 0)
a := []string{"value1", "value2"}
for i := 0; i < 2; i++ {
m6 = append(m6, map[string]interface{}{"key1": a[i]})
}
fmt.Println("m6", m6)
m7 := map[string][]string{
"key1": a,
}
fmt.Println("m7:", m7)
}