Golang笔记之结构体和方法
发布时间:2020-12-16 18:18:19 所属栏目:大数据 来源:网络整理
导读:Golang 中的 struct 有点跟 Java 中的类相似. struct 管他什么特性不特性的,先来段代码.看看跟学过的其他语言有啥区别. package mainimport ( "fmt")type Person struct { name string age int}type Student struct { grade string Person //匿名字段}func m
struct管他什么特性不特性的,先来段代码.看看跟学过的其他语言有啥区别. package main import ( "fmt" ) type Person struct { name string age int } type Student struct { grade string Person //匿名字段 } func main() { stu := new(Student) var stu2 Student = Student{"一年级",Person{"Arya Stark",15}} stu3 := Student{grade: "二年级",Person: Person{"Magicer",32}} stu.grade = "三年级" stu.Person = Person{"Jon Snow",33} fmt.Println(stu) //输出 &{三年级 {Jon Snow 33}} //在这里可以直接stu.name获得匿名字段的值,也可以stu.Person.name fmt.Println(stu.name,stu.age,stu.grade,stu.Person) //输出Jon Snow 33 三年级 {Jon Snow 33} fmt.Println(stu2) //输出 {一年级 {Arya Stark 15}} fmt.Println(stu3) //输出 {二年级 {Magicer 32}} }
type我们可以通过type关键字来定义一个类型.比如这里的 方法先来段跟方法有关的代码,看下 package main import ( "fmt" ) type Student struct { name string age int } //值方法 //当我们不需要在方法中使用这个结构的值的时候,可以使用_ func (_ Student) lean() { fmt.Println("Student lean") } //指针方法 //这里的(stu *Student)用来表示这个方法是属于谁的.可以位于不同的文件中,只要是在同一个包中就可以 //在这里我们的stu是Student的指针,只有这时候我们才可以修改p的值,// 当使用(stu Student)时,我们使用的是一份copy. func (stu *Student) eat(food string) { fmt.Println(stu.name," eat ",food,"t ",stu) } func main() { stu := new(Student) stu.eat("Apple") //student eat Apple &{ 0} stu.lean() // Student lean var stu2 Student = Student{"Jason",22} fmt.Println(stu2) //{Jason 22} stu2.eat("Apple") //Jason eat Apple &{Jason 22} } 我们看到上面 func (stu *Student) setName(name string) { stu.name = name } func (stu *Student) getName() string { return stu.name } 一个 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |