問題タブ [go-reflect]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
go - Golang の関数のリストから関数を選択する
基本的に、任意の関数のスライスまたは配列がある場合、int を返すものだけを選択したり、int を取るものだけを選択したりするにはどうすればよいですか?
Reflect パッケージを使用する必要があると考えましたが、ドキュメントを読んだだけでは、その方法を正確に理解するのに役立ちませんでした。
go - インターフェイスのスライスを型変換する
[]T
Go が に暗黙的に変換される[]interface{}
ときに、なぜ Go が暗黙的に に変換されないのか興味がT
ありinterface{}
ます。この変換について、私が見逃している重要なことはありますか?
例:
go build
文句を言う
関数の引数で (type []string) を type []interface {} として使用することはできません
そして、私が明示的にそれをやろうとすると、同じこと:b := []interface{}(a)
文句を言う
(type []string) を type []interface {} に変換できません
したがって、この変換を行う必要があるたびに (これは頻繁に発生するようです)、次のようなことを行ってきました。
これを行うためのより良い方法、またはこれらの変換を支援する標準ライブラリ関数はありますか? int や文字列などのリストを取得できる関数を呼び出すたびに、4 行の余分なコードを記述するのはばかげているように思えます。
go - スライスを格納するインターフェイス上の範囲{}
を受け入れる関数があるシナリオを考えますt interface{}
。がスライスであると判断された場合、そのt
スライスをどのようにrange
上書きしますか?
遊び場の例に行く:http://play.golang.org/p/DNldAlNShB
go - レシーバーのタイプに関係なく、インターフェースのメソッドを動的に呼び出します{}
私は Go で書かれたテンプレート システムに取り組んでいます。つまり、reflect
パッケージを自由に使用する必要があります。この特定の状況では、でメソッドを動的に呼び出すことができる必要がありますinterface{}
。奇妙なことに、データが既知の型である限り、私のリフレクション ロジックは正常に機能しますが、データが型である場合は機能しませんinterface{}
。
main()
次の例では、とのロジックPass()
が同一であることがわかります。唯一の違いは、データが既知の型であるか、内部の既知の型であるかです。interface{}
プレイする: http://play.golang.org/p/FTP3wgc0sZ
このコードを実行すると、次の結果が得られます
つまり、メソッドを動的に呼び出すための私の方法論は、オブジェクトが現在interface{}
.
代わりにポインターレシーバーを使用せずに渡すとi
、期待どおりに機能します。
プレイする: http://play.golang.org/p/myM0UXVYzX
これにより、私の問題は、 i( &i
)のアドレスにアクセスできないことだと思いますinterface{}
。Reflect パッケージを精査し、 and などをテストしましたreflect.Value.Addr()
がreflect.PtrTo()
、どちらも必要な方法で動作させることができませんでした。interface{}
私の推測では、 anが定義上参照オブジェクトであるという事実と関係があると思います。
go - 2つのスライスが等しいかどうかを確認する
2つのスライスが等しいかどうかを確認するにはどうすればよいですか?
go - 名前で構造体プロパティにアクセスする
これは、動作していない単純な go プログラムです。
エラー:
prog.go:18: 無効な操作: v[property] (タイプ *Vertex のインデックス)
私が望むのは、その名前を使用して Vertex X プロパティにアクセスすることです。私がやればv.X
うまくいきますが、うまくいきv["X"]
ません。
誰かがこれを機能させる方法を教えてもらえますか?
arrays - Golang: スライスのタイプを取得する
任意の配列の型を取得するためにreflectパッケージを使用していますが、取得しています
配列から型を取得するにはどうすればよいですか? 値から取得する方法を知っています。
go - Goでオブジェクトの型を見つける方法は?
Goでオブジェクトの型を見つけるにはどうすればよいですか? Python では、typeof
オブジェクトの型を取得するために使用します。Goでも同様に、同じことを実装する方法はありますか?
これが私が繰り返しているコンテナです:
この場合、文字列の配列であるオブジェクト行のタイプを取得できません。