1 回答

TA貢獻1777條經驗 獲得超10個贊
如果您的var2字符串指針是nil,您也應該保留var1 *wrapperspb.StringValue指針nil。wrapperspb.StringValue如果本身是nil指針,則句柄的方法。所以像這樣“轉換”它:
if var2 == nil {
var1 = nil
} else {
var1 = wrapperspb.String(*var2)
}
測試它:
for i := 0; i < 2; i++ {
var var1 *wrapperspb.StringValue
var var2 *string
if i == 0 {
s := "test"
var2 = &s
}
if var2 == nil {
var1 = nil
} else {
var1 = wrapperspb.String(*var2)
}
fmt.Printf("var2: %v\n", var2)
fmt.Printf("var1: %v\n", var1)
fmt.Printf("%q\n", var1.GetValue())
}
這將輸出(在Go Playground上嘗試):
var2: 0xc00009e470
var1: value:"test"
"test"
var2: <nil>
var1: <nil>
""
- 1 回答
- 0 關注
- 148 瀏覽
添加回答
舉報