方法--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语言代码块与作用域

《Go语言精进之路》读书笔记 | 使用无类型常量简化代码

《Go语言精进之路》读书笔记 | 汇总

45. sync.Mutex 互斥和互斥锁 | 厚土Go学习笔记

Go语言技巧之正确高效使用slice(听课笔记总结--简单易懂)

Go语言技巧之正确高效使用slice(听课笔记总结--简单易懂)