3 回答

TA貢獻1836條經(jīng)驗 獲得超5個贊
最后一個例子是我在大多數(shù)地方看到的。例如https://github.com/kubernetes/kubernetes/blob/master/cmd/genutils/genutils.go
編譯器不會將其檢測為重新定義,因為該表達式至少有一個新變量。

TA貢獻1780條經(jīng)驗 獲得超1個贊
給出最后一個例子,一個解決方案是不使用命名返回變量,并為每個功能塊引入作用域
package main
func registerAccount(email string, password string) error {
if err := validatePassword(password); err != nil {
return err
}
var passwordHash []byte
{
x, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost)
if err != nil {
return err
}
passwordHash = x
}
return nil
}
請注意,如果您充分利用了變量的語法,則 if 已經(jīng)確定了變量的作用域。
- 3 回答
- 0 關(guān)注
- 195 瀏覽
添加回答
舉報