相关疑难解决方法(0)

在Go中命名接收器变量'self'误导或良好实践?

我在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)

self go

37
推荐指数
4
解决办法
7117
查看次数

你什么时候在Go中嵌入mutex?

注意:我发现标题中的"嵌入"这个词是不好的选择,但我会保留它.

我看到很多代码都是这样的:

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)

我什么时候应该使用前者或以后?

embed struct mutex go

4
推荐指数
1
解决办法
6799
查看次数

标签 统计

go ×2

embed ×1

mutex ×1

self ×1

struct ×1