发布于2019-08-06 09:44 阅读(1151) 评论(0) 点赞(5) 收藏(3)
结构体:讲一个或多个变量组合到一起形成新的类型,这个类型就是结构体,结构体是值类型
定义结构体和赋值
//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} }
由于结构体是值类型,在方法传递时希望传递结构体地址,可以使用结构体指针完成
可以结合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} }
方法和函数语法比较像,区别是函数属于包,通过包调用函数,而方法属于结构体,通过结构体变量调用
默认是函数,隶属于包,所以需要添加标识,告诉编译器这个方法属于哪个结构体
(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 }
作者:dgfv
链接:https://www.pythonheidong.com/blog/article/7137/8e99e492aa6b2a1855e5/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!