2017-06-04 54 views
1

型の文字列ポインタの参照値を空文字列に設定するにはどうすればよいですか? この例を考えてみましょう:Golang:空文字列にnil文字列ポインタを設定する

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アドレス不能値Iが想定してい

を使用してGoの文字列は不変であるからです

答えて

4

文字列リテラルはaddressableではありません。

空の文字列含む変数のアドレスを取る:

s := "" 
t.value = &s 

か、新しい使用:

t.value = new(string) 
関連する問題