有*点和无指针差的Golang类型方法?
我是刚来戈朗的。只是想了解为Calc类型声明的两个方法之间的差异。第一个函数sum被声明为c*Calc sum,另一个不带*的函数被声明为c-Calc-Minus。这两者和推荐的写作方式有什么区别 我看到不同之处在于我们如何调用main下的函数。point*type方法需要newCalc,另一个方法可以通过执行Calc{}.Sum直接调用 一些行为解释会有所帮助有*点和无指针差的Golang类型方法?,go,Go,我是刚来戈朗的。只是想了解为Calc类型声明的两个方法之间的差异。第一个函数sum被声明为c*Calc sum,另一个不带*的函数被声明为c-Calc-Minus。这两者和推荐的写作方式有什么区别 我看到不同之处在于我们如何调用main下的函数。point*type方法需要newCalc,另一个方法可以通过执行Calc{}.Sum直接调用 一些行为解释会有所帮助 func main() { Calc{}.Minus(2, 2) c :=new(Calc) c.Su
func main() {
Calc{}.Minus(2, 2)
c :=new(Calc)
c.Sum(3, 2)
}
type Calc struct{
Result int
}
func (c *Calc) Sum(a int, b int) {
c.Result = a + b
}
func (c Calc) Minus(a int, b int) {
c.Result = a-b
}
func c*Calc Suma int,b int使用指针接收器,这意味着对c所做的任何编辑都将更改调用它的变量
func c Calc minus a int,b int使用值接收器。在本例中,您可以认为c只是它所调用的变量的一个副本。c、 结果=a-b无法按此功能中的预期工作
它是在变量的副本上操作的,而不是指向变量的指针。提示:您的减号方法不会真正更新您的Calc实例。您能知道发生了什么吗?这就是他们之间的主要区别