【发布时间】:2019-10-27 12:44:32
【问题描述】:
我是 golang 的新手。只是想了解为 Calc 类型声明的两种方法之间的区别。第一个函数 sum 被声明为 (c *Calc) Sum,另一个没有 * 的函数声明为 (c Calc) Minus。这两者和推荐的写法有什么区别?
我看到不同之处在于我们如何调用 main 下的函数。 point * 类型方法需要new(Calc),另一种可以直接通过Calc{}.Sum调用。
一些行为解释会有所帮助。
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
}
【问题讨论】:
-
提示:您的
Minus方法不会真的更新您的Calc实例。你能弄清楚发生了什么吗? (这是它们之间的主要区别)
标签: go