方法--Go语言学习笔记
Posted 旧时星空
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了方法--Go语言学习笔记相关的知识,希望对你有一定的参考价值。
方法–Go语言学习笔记
go语言中同时有方法和函数。一个方法就是一个包含了接收者的函数,接收者可以是命名类型或结构体类型的一个值或者是一个指针
因为Go语言不是纯面向对象的编程语言,所以方法区别于函数,即实现指定类别才可以调用,用来模仿以达到类的功能
语法:
func (接收者) 方法名(参数列表) (返回值列表) {
}
对比函数:
A:意义:
方法:某个类别的行为功能,需要指定的接收者调用
函数:一段独立功能的代码,可以直接调用
B:语法:
方法:方法名可以相同,只要接收者不同
函数:命名不能冲突
type cat struct{
color string
age int
}
type worker struct{
name string
age int
}
func(w worker)Info(){
fmt.Println(w.name,w.age)
}
func(w *worker)rest(){
fmt.Println(w.name,"在休息")
}
func(c cat)Info(){
fmt.Println(c.color,c.age)
}
func main(){
w1:=worker{name:"王五",age:34}
w1.Info()//王五 34
w2:=&worker{name:"武者",age:19}//w2为指针
w2.rest()//武者 休息
c1:=cat{color:"yello",age:1}
c1.Info()//yello 1 Info与worker同名
}
通过匿名字段和方法实现继承
//定义父类
type Person struct{
name string
age int
}
//定义子类
type Student struct{
Person//匿名字段
school string
}
//父类方法
func(P Person)eat(){
fmt.Println("吃饭")
}
func(S Student)eat(){//子类重写方法
fmt.Println("吃烧烤")
}
func main(){
p1:=Person{nmae:"王二狗",age:30}
fmt.Println(p1.name,p1.age)//王二狗 30
p1.eat()//吃饭
s1:=Sttudent{Person{"Rubby",18},"北京大学"}
fmt.Println(s1.name)// Rubby
s1.eat()//吃烧烤
}
以上是关于方法--Go语言学习笔记的主要内容,如果未能解决你的问题,请参考以下文章
《Go语言精进之路》读书笔记 | 理解Go语言代码块与作用域
45. sync.Mutex 互斥和互斥锁 | 厚土Go学习笔记