go语言学习笔记-方法(method)

理解

go语言中的方法也是函数的一种,只不过在func和函数名之间增加了参数(类型接收器),接收器的类型可以是自定义的结构体或者非结构体类型,也可以是重定义的基本类型如int、string或指针类型,支持在方法内部访问该参数。

 

语法

func (param Type) methodName() {
    //code...
}

下面我们用一个例子试一下,方法myBread接收一个bread结构体类型的参数m,然后输出一句话

package main

import "fmt"

type bread struct {
    price int
    taste string
}

func (m bread) myBread() {
    fmt.Println("the", m.taste, "bread is", m.price, "yuan")
}

func main() {
    bread1 := bread{
        price: 5,
        taste: "sweet",
    }
    bread1.myBread()
}

方法myBread接收一个bread结构体类型的参数m,然后在内部访问了接收器m的两个字段并打印出来,我们可以看到,方法使用 . 操作符来访问的

指针接收器

上面的是使用值接收器的方法,下面我们试一下指针接收器

package main

import "fmt"

type bread struct {
    price int
    taste string
}

func (m *bread) myBread() {
    m.price = 8
}

func main() {
    bread1 := bread{
        price: 5,
        taste: "sweet",
    }
    (&bread1).myBread()
    fmt.Println(bread1)
}

myBread方法有一个指针接收器,接收(m *bread)指针类型,方法内部对m的调用是可见的,因为myBread方法接收指针类型参数,所以我们在调用的时候(&bread1).myBread(),对于调用者来说price是可见的,(&bread1).myBread()可以写成bread1.myBread(),go会自动识别并转换为(&bread1).myBread()的

以上代码输出 {8 sweet}

 

未完待续...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值