Go语言函数声明语法:函数名之前括号中的内容

func ( x DDDD) FOO(var type) ( ret type , err Errot)

也就是说 x DDDD是什么意思.

 

func (h handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
    ...
}

这意味着ServeHTTP不是一个独立的功能。函数名称前面的括号是Go定义这些函数将在其上运行的对象的方式。所以,本质上ServeHTTP是一个类型处理程序的方法,可以使用类型处理程序的任何对象来调用,比如h。

他们也被称为接收者。这里是定义他们的方法有两种。如果你想修改接收器,使用如下的指针:

func (s *MyStruct) pointerMethod() { } // method on pointer

如果你不需要修改接收器,则可以将接收器定义为如下值:

func (s MyStruct)  valueMethod()   { } // method on value

Go的这个例子展示了这个概念。

package main

import "fmt"

type Mutatable struct {
    a int
    b int
}

func (m Mutatable) StayTheSame() {
    m.a = 5
    m.b = 7
}

func (m *Mutatable) Mutate() {
    m.a = 5
    m.b = 7
}

func main() {
    m := &Mutatable{0, 0}
    fmt.Println(m)
    m.StayTheSame()
    fmt.Println(m)
    m.Mutate()
    fmt.Println(m)

上述程序的输出是:

&{0 0}
&{0 0}
&{5 7}

 

  • 39
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值