1、简介
- Go语言中的结构体是一种自定义数据类型,可以将不同类型的数据字符组合在一起形成一个单独的实体。
- 结构体可以用于存储和操作复杂的数据结构,以及创建自定义数据类型。通过自定义结构体创建的变量,可以存储不同类型的数据字段。
- 在实际开发中,结构体的用途非常广泛,常用于表示复杂的实体,例如数据库中的表结构、API按口的数据格式等。使用结构体不仅可以提高代码的模块化程度,还可以实现复杂数据结构的创建、修改和传递。
2、结构体使用
2.1 简单示例
package main
import "fmt"
type People struct {
Name string
Sex string
Age int
Address string
}
func main() {
var p People
p.Name = "杜宽"
p.Sex = "男"
p.Age = 18
p.Address = "北京"
fmt.Printf("定义的数据是: %v, 姓名是:%s\n", p, p.Name)
var p2 People = People{"Dotbalo", "Man", 19, "Russia"}
fmt.Printf("定义的数据是: %v, 姓名是:%s \n", p2, p2.Name)
p3 := People{"Maria", "Women", 19, "Russia"}
fmt.Printf("定义的数据是: %v, 姓名是:%s \n", p3, p3.Name)
p = p3
fmt.Printf("赋值后的数据是: %v, 姓名是:%s\n", p, p.Name)
fmt.Println("p2和p3是否相等:", p2 == p3)
}
2.2 自定义类型
package main
import "fmt"
type People struct {
Name string
Sex string
Age int
Address string
}
func (p *People) getInfo() string {
return fmt.Sprintf("您的信息如下: \n \t姓名: %s\n \t性别: %s\n \t年龄: %d\n \t地址: %s\n", p.Name, p.Sex, p.Age, p.Address)
}
func (p *People) Eat(food string) {
fmt.Printf("%s吃了: %s", p.Name, food)
}
func main() {
var p People
p.Name = "张"
p.Sex = "男"
p.Age = 18
p.Address = "北京"
pInfo := p.getInfo()
fmt.Println(pInfo)
p.Eat("菠萝")
}
2.3 结构体嵌套
package main
import "fmt"
type Phone struct {
Model string
Price float32
}
type People struct {
Name string
Sex string
Age int
Address string
Mobile Phone
}
func (p *People) getInfo() string {
return fmt.Sprintf("您的信息如下: \n \t姓名: %s\n \t性别: %s\n \t年龄: %d\n \t地址: %s\n", p.Name, p.Sex, p.Age, p.Address)
}
func (p *People) Eat(food string) {
fmt.Printf("%s吃了: %s\n", p.Name, food)
}
func (ph *Phone) call(name string) {
fmt.Println("打电话给:", name)
}
func main() {
var p People
p.Name = "张"
p.Sex = "男"
p.Age = 18
p.Address = "北京"
pInfo := p.getInfo()
fmt.Println(pInfo)
p.Eat("菠萝")
ph := Phone{"iPhone 18 Pro Max", 9999.99}
p.Mobile = ph
fmt.Printf("%s拥有的手机是:%s, 价格是:%f\n", p.Name, p.Mobile.Model, p.Mobile.Price)
p.Mobile.call("小明")
}