2016-07-13 44 views
2

私はSystemStatusで4番目の要素が["Nodes","6"]が、その後数にアクセスする場合、それはその後、例えば、私はこれをやっているSystemStatus内の要素にアクセスするためには、[][2]stringあるSystemStatusと呼ばれる内部のフィールドを持つDockerInfoと呼ばれるオブジェクトを取得しています6[] [2]文字列を[string]文字列に変換する方法はありますか?

dockerinfo.SystemStatus[3][1] 

しかしNodes要素はので、私はインデックスを使用することはできませんし、代わりに私が書いたとえばによりノード数を見つけたい、常に第四の位置に固定されていない

dockerinfo.SystemStatus["Nodes"] 

どうすればいいですか?またはSystemStatusmap[string]string形式に変換する方法はありますか?

答えて

0

dockerinfo.SystemStatusスライスの値を反復するために、単純なforループを使用し、"Nodes"に最初の値を比較します

for _, v := range dockerinfo.SystemStatus { 
    if v[0] == "Nodes" { 
     // Got it! 
     value := v[1] // This will be "6" in your example 
     fmt.Println("Nodes value:", value) 
     break 
    } 
} 

このvalueはタイプstringのものであろうが、それはそれは、数値データを保持して見えます。あなたが例えばintとしてそれをしたい場合は、番号を解析するstrconv.Atoi()を使用することがあります。

value := v[1] 
if n, err := strconv.Atoi(value); err == nil { 
    // n is of type int, use it like so 
} else { 
    // Not a number! 
} 

あなたが値を何度も検索する持っている場合、それからマップを構築するために有益かもしれません。これは、あなたがそれを行うことができる方法である:

ssmap := map[string]string{} 
for _, v := range dockerinfo.SystemStatus { 
    ssmap[v[0]] = v[1] 
} 

// And then you can do simple lookup: 
if nodes, ok := ssmap["Nodes"]; ok { 
    fmt.Println("Nodes value:", nodes) 
} else { 
    // Nodes not found! 
} 
+0

ありがとう、私はので、どのように私は私がノードにアクセスする必要がある例えばマップ、ステータス、コンテナにそれらをマッピングすることができるノード要素以外にアクセスする必要がある... –

+0

@ thesaifi編集された答えを参照してください、マップへの変換が含まれています。 – icza

+0

ありがとう私はあなたの答えをupvotedと受け入れたが、私はまだ15の評判に達していない –

関連する問題