在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
4.1.结构体结构体:将一个或多个变量组合到一起形成新的类型,这个类型就是结构体,结构体是值类型 定义结构体和赋值 //Learn_Go/main.go package main import "fmt" type People struct { Name string Age int } func main() { var peo People fmt.Println(peo) //{ 0} fmt.Printf("%p",&peo) //0x110040f0 //赋值 //第一种 peo = People{"derek",20} fmt.Println(peo) //{derek 20} //第二种 peo2 := People{Age:12,Name:"jack"} fmt.Println(peo2) //{jack 12} //第三种 peo.Name = "alice" peo.Age = 25 fmt.Println(peo) //{alice 25} } 4.2.结构体指针由于结构体是值类型,在方法传递时希望传递结构体地址,可以使用结构体指针完成 可以结合new()函数创建结构体指针 //Learn_Go/main.go package main import "fmt" type People struct { Name string Age int } func main() { peo := new(People) fmt.Println(peo) //&{ 0} fmt.Println(peo == nil) //false peo.Name = "derek" peo.Age = 22 fmt.Println(peo) //&{derek 22} peo2 := peo fmt.Println(peo2) //&{derek 22} peo2.Name = "Jack" fmt.Println(peo, peo2) //&{Jack 22} &{Jack 22} } 4.3.方法方法和函数语法比较像,区别是函数属于包,通过包调用函数,而方法属于结构体,通过结构体变量调用 默认是函数,隶属于包,所以需要添加标识,告诉编译器这个方法属于哪个结构体 (1)创建方法 //Learn_Go/main.go package main import "fmt" type People struct { Name string Weight int } func (p People) run() { fmt.Println(p.Name,"正在跑步,当前体重为:",p.Weight) } func main() { peo := People{"derek",120} peo.run() //derek 正在跑步,当前体重为: 120 } (2)修改值,用指针 //Learn_Go/main.go package main import "fmt" type People struct { Name string Weight int } func (p *People) run() { fmt.Println(p.Name,"正在跑步,当前体重为:",p.Weight) //运行一次run方法,体重减去1 p.Weight -= 1 } func main() { peo := People{"derek",120} peo.run() //derek 正在跑步,当前体重为: 120 fmt.Println("跑完步后的体重为:",peo.Weight) //跑完步后的体重为: 119 }
|
请发表评论