インタフェースのスライスに値にアクセス外出-吐き出すこのように見える:golang:私が来るのデータ構造を持っている
([]interface {}) (len=1 cap=1) {
(string) (len=1938) "value"
}
それは私がこのvalue
を印刷することができますどのタイプ[]interface {}
でありますfmt
、または私がそれを使用できるように何らかの方法でアクセスしてください。
インタフェースのスライスに値にアクセス外出-吐き出すこのように見える:golang:私が来るのデータ構造を持っている
([]interface {}) (len=1 cap=1) {
(string) (len=1938) "value"
}
それは私がこのvalue
を印刷することができますどのタイプ[]interface {}
でありますfmt
、または私がそれを使用できるように何らかの方法でアクセスしてください。
タイプアサーションまたは反射型の作業を、基底型に汎用interface{}
で使用できます。どのようにこれを行うかは、特定のユースケースによって異なります。あなたはinterface{}
はあなたの例のように[]interface{}
なることを期待することができた場合は、次のことができます。
if sl, ok := thing.([]interface{}); ok {
for _, val := range sl {
fmt.Println(val)
// Or if needed, coerce val to its underlying type, e.g. strVal := val.(string)
}
}
を使用すると、基になる型についての仮定を行うことができない場合、あなたは何をする必要がありますいくつかの黒い魔法はreflect
を使っています。
それは、ありがとう! – jaxxstorm
コンテキストとは何ですか?どのようにそれを使いたいですか?あなたが 'fmt'でそれを印刷したいなら、[あなたはそれを行うことができます](https://play.golang.org/p/S0n2C0SJDY)。 – Adrian
問題は、スライス(または少なくとも[]で囲まれたもの)を返すようです。私は範囲を超えようとしましたが、 '値の範囲(タイプinterface {}) 'の範囲を超えることはできません。 – jaxxstorm
そしてはい、私は' fmt'で印刷できるように割り当てたいだけです。 – jaxxstorm