2017-03-11 10 views
-1

インタフェース[]に格納されているデータを文字列配列に戻そうとしています。予期しないエラーが発生しました。キャスト・インタフェース{}を文字列配列

type Foo struct { 
    Data interface{} 
} 

func (foo Foo) GetData() interface{} { 
    return foo.Data 
} 

func (foo *Foo) SetData(data interface{}) { 
    foo.Data = data 
} 

func main() { 
    f := &Foo{} 
    f.SetData([]string{"a", "b", "c"}) 

    var data []string = ([]string) f.GetData() 
    fmt.Println(data) 
} 

エラー:main.go:23:構文エラー:ステートメント

Go Playground

答えて

1

の終わりにF予期しないあなたが実行しようとしている何がconversionです。タイプ変換のための特別なルールがあります。これらのすべては、前のリンクで見ることができます。つまり、interface{}の値を[]stringに変換することはできません。 、明確化のため

var data []string = f.GetData().([]string) 

https://play.golang.org/p/FRhJGPgD2z

+0

感謝:あなたの代わりに行う必要がありますどのような

はあなたが別の型へのインターフェイスタイプを「変換」(しようとする試み)を可能にするメカニズムである、type assertionです私は質問をしました。なぜ人々が投票したのですか、質問をする前にこれを知っておくべきでしょうか? – user2727195

関連する問題