package main import ( "fmt" ) func main() { var tom Person tom.name = "Tom" tom.age = 26 fmt.Printf("my name is %s,I'm %d years old\n", tom.name, tom.age) //按顺序赋值 jim := Person{"Jim", 25} fmt.Printf("my name is %s,I'm %d years old\n", jim.name, jim.age) //field:value赋值,可不按顺序 lucy := Person{age: 23, name: "Lucy"} fmt.Printf("my name is %s,I'm %d years old\n", lucy.name, lucy.age) older, olderage := OlderPerson(tom, jim) fmt.Printf("the older person is %s,old age is %d\n", older.name, olderage) lily := Employee{Human: Human{"Lily", 23, "13883987410"}, string: "5", phone: "15920580257"} fmt.Printf("my name is %s,my age is %d,i have %s friends and my PhoneNumber is%s\n", lily.name, lily.age, lily.string, lily.phone) fmt.Printf("my name is %s,my age is %d,i have %s friends and my other PhoneNumber is%s", lily.name, lily.age, lily.string, lily.Human.phone) } //struct type Person struct { name string age int } func OlderPerson(p1, p2 Person) (Person, int) { if p1.age > p2.age { return p1, p1.age - p2.age } return p2, p2.age - p1.age } //struct匿名字段:只提供类型,而不写字段名的方式,也就是匿名字段,也称为嵌入字段。 type Human struct { name string age int phone string } //Employee中有phone,Human中也有phone,默认访问最外层的,即Employee中的phone, //如果要访问Human中的phone请使用Employee.Human.phone type Employee struct { Human string phone string }