相关疑难解决方法(0)

在Go方法中通过值传递"this"会有性能损失吗?

经过9年的C++开发,我正在探索Go.在C++中,由于性能损失,除了内置类型的变量之外,通过值传递函数的参数是一种不好的做法:参数的所有字段都将被复制,并且在大多数情况下,这将是一个非常昂贵的操作.

对Go来说这是真的吗?通过值传递"this"仅仅为方法分配"const"语义看起来非常昂贵.Go编译器是否足够智能以防止在第一次修改之前复制变量?为什么不通过值将"this"传递给Go中的反模式,就像在C/C++中一样?

c++ go

5
推荐指数
4
解决办法
784
查看次数

Go:方法接收器和参数之间有什么区别?

看看下面显示的G​​o文档,我无法理解接收器和参数之间的区别:

 func (p *Page) save() error {
     filename := p.Title + ".txt"
     return ioutil.WriteFile(filename, p.Body, 0600)
 }
Run Code Online (Sandbox Code Playgroud)

此方法的签名读取:这是一个名为save的方法,它将接收器p作为指向Page的指针.它不带参数,并返回类型错误的值.

go

5
推荐指数
1
解决办法
1121
查看次数

使用指向Golang中结构的指针将方法转换为函数

我读了一些奇怪的代码,它们将一个方法转换为一个函数,该函数的第一个参数是指向该方法结构的指针.

我写了一个例子来演示它:

package main

import "fmt"

type fooS struct{}

func (s *fooS) fooF(fooArg interface{}) {
    fmt.Println("fooF: ", fooArg)
}

type wowS struct {
    callback func(s *fooS, fooArg interface{})
}

func main() {
    wow := new(wowS)
    wow.callback = (*fooS).fooF // strange
    wow.callback(nil, 123)
}
Run Code Online (Sandbox Code Playgroud)

Golang Playground Link

该示例的语法很奇怪,但没有错误.

谁能告诉我这些代码是如何工作的还是给我一份关于它们的官方文件?

谢谢:)

go

2
推荐指数
1
解决办法
1857
查看次数

标签 统计

go ×3

c++ ×1