如何将类型中的字符串指针的引用值设置为空字符串?考虑以下示例:
package main import ( "fmt" ) type Test struct { value *string } func main() { t := Test{nil} if t.value == nil { // I want to set the pointer's value to the empty string here } fmt.Println(t.value) }
我尝试了&和*运算符的所有组合都无济于事:
&
*
t.value = &"" t.value = *"" &t.value = "" *t.value = ""
显然其中一些很愚蠢,但我没有发现尝试的危害。我也尝试使用reflect和SetString:
reflect
SetString
reflect.ValueOf(t.value).SetString("")
这会导致编译错误
恐慌:反映:使用不可寻址的值reflect.Value.SetString
我假设这是因为Go中的字符串是不可变的?
字符串文字不可寻址。
取包含空字符串的变量的地址:
s := "" t.value = &s
或使用新的:
t.value = new(string)