2016-09-07 3 views
-2

私は非常にGoで新しく、Rubyから来ました。だから... ...異なるタイプの配列を作成する

私はそれは愚かな質問だ場合は申し訳ありません

[1, 2, "apple", true] 

異なるタイプを含むどのような配列を構築することができます。

ありがとうございました。

+1

Goでこれを行う方法はありますが、有効なユースケースがあるかもしれませんが、私はこれをしないことをお勧めします。 Rubyの知識と経験をGoに翻訳しようとしているようですが、おそらくこれは良い考えではありません。 GoのタイプはRubyとは異なり、思考やプログラミングの方法が異なります。 – Carpetsmoker

+0

@Carpetsmokerありがとうございます、私はあなたが意味するものを参照してくださいが、私は知りたいと思っている移動能力 –

+0

あなたは新しいに移動した場合:たぶん "適切な"、安全かつ慣用的に固執し、宇宙は数ヶ月間未踏のままですか? – Volker

答えて

1

これは、スライスをinterface{}タイプにすることで可能です。例:

func main() { 
    arr := []interface{}{1, 2, "apple", true} 
    fmt.Println(arr) 

    // however, now you need to use type assertion access elements 
    i := arr[0].(int) 
    fmt.Printf("i: %d, i type: %T\n", i, i) 

    s := arr[2].(string) 
    fmt.Printf("b: %s, i type: %T\n", s, s) 
} 

詳しくはhereを参照してください。

+1

"タイプスイッチのアクセスエレメントを使用する必要があります。"タイプスイッチ "はありません。タイプアサーションです。 –

+0

@Tim:fixed。ありがとう – abhink

+0

正確に言えば、それは同じタイプのスライスです - interface {}、異なる型の要素を持つ配列ではありません。 – Uvelichitel

関連する問題