package main
import (
"testing"
)
type wallet struct {
bitcoin int
}
func TestTb(t *testing.T) {
wa:=wallet{}
wa.deposit(10)
got:=wa.balance()
want:=10
if got!=want{
t.Errorf("got %d want %d",got,want)
}
}
func (w *wallet) deposit(v int) {
w.bitcoin+=v
}
func (w wallet) balance()int {
return w.bitcoin
}
运行结果
=== RUN TestTb
--- PASS: TestTb (0.00s)
PASS
按我的理解,wallet结构的balance方法,为值接收者,而不是指针接收者,按道理是返回0的
有疑问加站长微信联系(非本文作者)

按你的理解也是报错,凭什么返回0....
go只是自动帮你做了一个语法糖,让你能狗直接通过. 操作取到指针对应的值或者方法方法而已。
deposit方法用的是指针接收者,已经修改了内部状态 btcoin 了,balance() 返回的固然也是10,不管用的是指针还是值接收者