我在Go上看到过相当多的博客和视频,据我所知,在编写方法时,没有一个作者使用"self"或"this"作为receiver变量.然而,有关堆栈溢出的问题似乎有很多问题,这让我想到如果将变量命名为"self"这是否具有误导性?
读取方法集的规范并不提供任何证据(在我的解释中).
我似乎记得在某个地方发现它不是真正的自我指针,任何人都可以列出证据或提供任何推理方式,如果有任何问题/陷阱可能会因为将其视为"自我"而产生?
一个简单的例子:
type MyStruct struct {
Name string
}
Run Code Online (Sandbox Code Playgroud)
哪种方法更合适,或两者兼而有之?
func (m *MyStruct) MyMethod() error {
// do something useful
}
Run Code Online (Sandbox Code Playgroud)
要么
func (self *MyStruct) MyMethod() error {
// do something useful
}
Run Code Online (Sandbox Code Playgroud) 注意:我发现标题中的"嵌入"这个词是不好的选择,但我会保留它.
我看到很多代码都是这样的:
type A struct {
mu sync.Mutex
...
}
Run Code Online (Sandbox Code Playgroud)
并像这样使用它:
a := &A{}
a.mu.Lock()
defer a.mu.Unlock()
a.Something()
Run Code Online (Sandbox Code Playgroud)
它是否优于本地互斥或全局互斥?
a := &A{}
var mu sync.Mutex
mu.Lock()
defer mu.Unlock()
a.Something()
Run Code Online (Sandbox Code Playgroud)
我什么时候应该使用前者或以后?