go - Golang "func (t *SomeType) myFuncName(param1, param2)"语法是什么意思

标签 go

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

type SomeType struct {

      //struct entries

}

关注者:

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

     //function body and return

}

请解释指向结构 (t *SomeType) 的指针在那里做什么 - 为什么需要它以及此语法的正确名称是什么 - 因为在官方文档中找不到解释。

最佳答案

这是一个类型定义,后面是一个方法函数定义,带有定义类型的指针接收器。参见 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

这有点类似于一些其他语言中类定义后跟方法定义。

关于go - Golang "func (t *SomeType) myFuncName(param1, param2)"语法是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48606084/

相关文章:

mongodb - 如何通过 Go 以 UUID 类型保存 Mongo 中的内容?

windows - 我需要 Go 语言运行时来运行已编译的 Go 应用程序吗?

networking - 尝试在 go 中实现端口扫描器

GOPL : Binary assignment operator "saves us from re-evaluation?"

go - 有大量互斥体有副作用吗?

Go 程序在 WIndows 7 中无法运行

Golang安装

go - fmt.Println() 时 golang 编译器会做什么

用于在 html (golang) 中查找图像的正则表达式

string - 如何将[]string或[]byte类型传递给golang中的SplitAfterN?