2017-06-04 163 views
1

如何將類型中的字符串指針的引用值設置爲空字符串? 考慮這個例子:Golang:將零字符串指針設置爲空字符串

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 = "" 

顯然他們有些是愚蠢的,但我沒有看到危害在嘗試。 我也使用reflectSetString嘗試:

reflect.ValueOf(t.value).SetString("") 

,這給編譯錯誤

恐慌:反映:使用不可尋址值

我假設reflect.Value.SetString那是因爲Go中的字符串是不可變的?

回答

4

字符串文字不是addressable

以可變的包含空字符串的地址:

s := "" 
t.value = &s 

,或者使用新的:

t.value = new(string)