本文共 2409 字,大约阅读时间需要 8 分钟。
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 mypeople := map[string]string{ "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) }`` ### 技术说明 - **结构体定义**:首先定义了`Person`结构体,包含`Name`和`Likes`字段。然后定义了`Student`结构体,用于存储学生信息。 - **循环处理**:通过循环遍历`people`和`likes`映射表,实现了数据的分类存储。 - **映射表操作**:展示了如何查找映射表中的值以及检查键是否存在。 - **数组映射的使用**:展示了如何利用数组映射来存储和处理数据。 - **切片与映射结合**:通过切片和映射结合的方式,实现了数据的动态存储与访问。
转载地址:http://arboz.baihongyu.com/