go struct

package main import ( "fmt" ) var testFuncs = []func(){ //map取值返回的是值而非引用 func() { passwd := map[int]struct { name string password int }{ 1: {"user1", 10}, 2: {"user2", 20}, } u1 := passwd[1] u1.password = 123 fmt.Printf("user1: %v,%v\n", passwd[1], u1) }, // map通过迭代器返回的元素次序是随机的 func() { users := map[string]string{ "root": "admin", "superuser": "super power", "user": "normal power", } for k, v := range users { fmt.Printf("k:%v,v:%v\n", k, v) } }, // struct拥有补位字段后不能序列初始化,必须指明值的名字 func() { type Node struct { _ int id int data []byte next *Node } n1 := Node{ id: 1, data: []byte("root"), next: nil, } fmt.Println(n1) }, // 结构体的首元素的指针与结构体相同 func() { type User struct { id int name string } type Manager struct { User value int } m := Manager{User{1, "Tom"}, 2} fmt.Printf("Manager: %p, %v\n", &m, &m) fmt.Printf("User: %p, %v\n", &m.User, &m.User) fmt.Printf("id: %p, %v\n", &m.id, &m.id) }, } func main() { for i, f := range testFuncs { fmt.Println("test", i+1) f() } }