指针
# 指针
func (w Wallet) Deposit(amount int) {
fmt.Println("address of balance in Deposit is", &w.balance)
w.balance += amount
}
1
2
3
4
2
3
4
上面的示例,声明一个Deposit
方法,接受者是w
,如果方法被调用,接受者会被复制返回一个副本,方法体内使用的接受者的副本,所以在方法体内无论如何怎么修改接受者副本的属性,都不会影响到原接受者。
func (w *Wallet) Deposit(amount int) {
fmt.Println("address of balance in Deposit is", &w.balance)
w.balance += amount
}
1
2
3
4
2
3
4
使用*可以拿到接受者的指针(内存地址),从而修改接受者属性
# nil
- 指针可以是 nil
- 当函数返回一个的指针,你需要确保检查过它是否为 nil,否则你可能会抛出一个执行异常,编译器在这里不能帮到你
- nil 非常适合描述一个可能丢失的值
# 错误
错误是在调用函数或方法时表示失败的
通过测试我们得出结论,在错误中检查字符串会导致测试不稳定。因此,我们用一个有意义的值重构了,这样就更容易测试代码,同时对于我们 API 的用户来说也更简单。
错误处理的故事远远还没有结束,你可以做更复杂的事情,这里只是抛砖引玉。后面的部分将介绍更多的策略。
上次更新: 2022/10/23, 22:52:26