Golang“func(t * SomeType)myFuncName(param1,param2)”的含义是什么意思

时间:2018-02-04 08:14:48

标签: go

我正在学习Golang - 在教程中我经常看到这样的语法:

type SomeType struct {

      //struct entries

}

以下:

func (t *SomeType) myFuncName(param1, param2) typeToReturn {

     //function body and return

}

请解释什么指向struct(t * SomeType)的指针 - 为什么需要它以及这个语法​​的正确名称是什么 - 因为在官方文档中找不到解释是不可能的。

1 个答案:

答案 0 :(得分:0)

这是一个类型定义,后跟一个带有定义类型的指针接收器的方法函数定义。请参阅the Go Language Specification on Method Sets

所以

package main

import(
    "fmt"
)

type TD struct {
    Foo     string
}

func (td *TD) Bar() {
    td.Foo = `bar`
}

func main() {
    a := new(TD)
    a.Bar()
    fmt.Println(a.Foo)
}

打印bar

它有点类似于一个类定义,后面是一些其他语言中的方法定义。