定义
结构体(struct)是一种用户自定义的复合数据类型,它可以包含多个字段(field),每个字段可以是不同的类型。结构体常用于组织数据并表示复杂的数据结构。可以类比于java的对象
代码定义
定义person这样的一个结构体
type Person struct {
Name string
Age int
}
定义及使用结构体
package main
import "fmt"
type Person struct {
Name string
Age int
}
func main() {
// 定义结构体
p1 := Person{Name: "Alice", Age: 30}
p2 := Person{Name: "Bob", Age: 40}
p3 := &Person{Name: "Bob", Age: 30}
fmt.Printf("p1 = %+v\n,p2 = %+v\n,p3= %+v\n", p1, p2, p3)
// 访问和修改结构体
fmt.Printf("p1.name = %s\n", p1.Name)
p1.Age = 100
fmt.Printf("p1.age = %d\n", p1.Age)
}
实现面向对象&&内嵌和组合
package main
import "fmt"
type Person struct {
Name string
Age int
*Dog
}
type Dog struct {
Name string
Age int
}
func (p *Person) speak() {
fmt.Printf("%s is %d years old\n", p.Name, p.Age)
}
func (d *Dog) speak() {
fmt.Printf("%s 汪汪叫", d.Name)
}
func main() {
// 定义结构体
p3 := &Person{Name: "Bob", Age: 30, Dog: &Dog{Name: "Ang", Age: 30}}
p3.speak()
p3.Dog.speak()
}
-----------------------运行结果-------------------------
Bob is 30 years old
Ang 汪汪叫