在 Go 中使用 Struct 表示结构体,结构体是由一系列具有相同或不同类型的数据构成的数据集合。
type identifier struct {
field1 type1
field2 type2
...
}
type person struct {
name string
age int
}
func main() {
var p1 person
p1.name = "张三"
p1.age = 18
fmt.Println(p1) // {张三 18}
p2 := person{"李四", 20}
fmt.Println(p2) // {李四 20}
p3 := person{name: "王五", age: 22}
fmt.Println(p3) // {王五 22}
p4 := new(person)
p4.name = "赵六"
p4.age = 24
fmt.Println(p4) // &{赵六 24}
}
type person struct {
name string
age int
}
type student struct {
person
school string
}
func main() {
s1 := student{person{"张三", 18}, "清华大学"}
fmt.Println(s1) // {{张三 18} 清华大学}
fmt.Println(s1.name) // 张三
fmt.Println(s1.age) // 18
fmt.Println(s1.school) // 清华大学
}
type person struct {
name string
age int
}
type student struct {
person
school string
}
type teacher struct {
person
school string
}
func main() {
s1 := student{person{"张三", 18}, "清华大学"}
fmt.Println(s1) // {{张三 18} 清华大学}
fmt.Println(s1.name) // 张三
fmt.Println(s1.age) // 18
fmt.Println(s1.school) // 清华大学
t1 := teacher{person{"李四", 20}, "北京大学"}
fmt.Println(t1) // {{李四 20} 北京大学}
fmt.Println(t1.name) // 李四
fmt.Println(t1.age) // 20
fmt.Println(t1.school) // 北京大学
}
type person struct {
name string
age int
}
func (p person) say() {
fmt.Printf("我叫 %s,今年 %d 岁。\n", p.name, p.age)
}
func main() {
p1 := person{"张三", 18}
p1.say() // 我叫 张三,今年 18 岁。
}
type person struct {
name string
age int
}
func (p *person) say() {
fmt.Printf("我叫 %s,今年 %d 岁。\n", p.name, p.age)
}
func main() {
p1 := person{"张三", 18}
p1.say() // 我叫 张三,今年 18 岁。
}
type person struct {
name string
age int
}
type student struct {
person
school string
}
func (p person) say() {
fmt.Printf("我叫 %s,今年 %d 岁。\n", p.name, p.age)
}
func main() {
s1 := student{person{"张三", 18}, "清华大学"}
s1.say() // 我叫 张三,今年 18 岁。
}
type person struct {
name string
age int
}
type student struct {
person
school string
}
type teacher struct {
person
school string
}
func (p person) say() {
fmt.Printf("我叫 %s,今年 %d 岁。\n", p.name, p.age)
}
func main() {
s1 := student{person{"张三", 18}, "清华大学"}
s1.say() // 我叫 张三,今年 18 岁。
t1 := teacher{person{"李四", 20}, "北京大学"}
t1.say() // 我叫 李四,今年 20 岁。
}
type person struct {
name string
age int
}
type student struct {
person
school string
}
type teacher struct {
person
school string
}
func (p person) say() {
fmt.Printf("我叫 %s,今年 %d 岁。\n", p.name, p.age)
}
func main() {
s1 := student{person{"张三", 18}, "清华大学"}
s1.say() // 我叫 张三,今年 18 岁。
t1 := teacher{person{"李四", 20}, "北京大学"}
t1.say() // 我叫 李四,今年 20 岁。
}