package main import "fmt" type person struct { city, name string age int } func main() { //基本实例化 var p1 person //没有初始化的结构体,其成员变量都是对应其类型的零值。 p1.age = 10 p1.city = "anhui" p1.name = "ld" //匿名结构体 var user struct { name string age int } user.age = 10 user.name = "username" fmt.Println(p1, user) //创建指针类型结构体 var p2 = new(person) fmt.Printf("p2: %T\n", p2) fmt.Printf("p2: %#v\n", p2) //取结构体地址的实例化 p3 := &person{} fmt.Printf("p3: %T\n", p3) fmt.Printf("p3: %#v\n", p3) p3.age = 18 //本质在底层是执行的 (*p3).age = 18 p3.city = "beijing" p3.name = "zhang san" fmt.Printf("p3: %#v\n", p3) p4 := newPerson("p4", "suzhou", 22) fmt.Printf("p4: %#v\n", p4) } func newPerson(name, city string, age int) *person { return &person{ city: city, name: name, age: age, } }