2016-11-15 11 views
0

私はプログラミングの初心者で、今は私がgo langを学習しています。この質問は簡単かもしれません。私は次のような宣言を持っています:配列の構造体に格納するのに助けが必要

var list []struct { 
    Name string 
    Value string 
} 

私はこの中の変数をどのように初期化するのか分かりません。助けをお待ちしています。

私が試してみました

list[0].Name="12" 
    list[0].Value="123" 
    // this throws an index out of range exception.. 
+1

最初に**インデックス0のエントリを追加する必要はありません(もちろん、追加のエントリもあります)? – FDavidov

+0

私が学んだように、割り当てのためのキーワードを使用する必要があります。しかし、これは私が割り振る方法を知っていないか、間違っていますか?。助けてください。おかげです。 –

+0

私はあなたが使用している言語、しかし、あなたは新しいコマンドを探してみることがあります。多くの言語では、新しいオブジェクトのためのスペースを(あなたの場合は)array_に配置することを意味します。 – FDavidov

答えて

0

後のアプローチは、あなたが探している1かもしれません。

package main 
import ("fmt") 
type YourType struct { 
    Name, Value string 
} 
var ListOfTypes=[]YourType{ 
    {Name:"NameOne",Value:"ValueOne"}, 
    {Name:"NameTwo",Value:"ValueTwo"}, 
} 
func main() { 
    fmt.Println(ListOfTypes[0]) // This will print {NameOne ValueOne} 
    ListOfTypes[0].Name="NewValue" 
    fmt.Println(ListOfTypes[0]) //{NewValue ValueOne} 
} 
3

まずあなたがメインのスコープの外で構造体の型を宣言する必要があります。

type myStruct struct { 
    Name string 
    Value string 
} 

その後、あなたは「私はこの構造体のxのスライスをしたい」、行くことを言う:

list := make([]myStruct, 5) 

それからちょうど右のインデックスを使用して構造体を埋める:

list[0].Name = "12" 
list[0].Value = "123" 
+1

それは技術的にスライスではなく配列です。 – heemayl

+0

それは本当です、悪いです。私はCとGoをミックスしています。 –

関連する問題