問題タブ [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.

0 投票する
1 に答える
6338 参照

go - Golang の関数のリストから関数を選択する

基本的に、任意の関数のスライスまたは配列がある場合、int を返すものだけを選択したり、int を取るものだけを選択したりするにはどうすればよいですか?

Reflect パッケージを使用する必要があると考えましたが、ドキュメントを読んだだけでは、その方法を正確に理解するのに役立ちませんでした。

0 投票する
8 に答える
131547 参照

go - インターフェイスのスライスを型変換する

[]TGo が に暗黙的に変換される[]interface{}ときに、なぜ Go が暗黙的に に変換されないのか興味がTありinterface{}ます。この変換について、私が見逃している重要なことはありますか?

例:

go build文句を言う

関数の引数で (type []string) を type []interface {} として使用することはできません

そして、私が明示的にそれをやろうとすると、同じこと:b := []interface{}(a)文句を言う

(type []string) を type []interface {} に変換できません

したがって、この変換を行う必要があるたびに (これは頻繁に発生するようです)、次のようなことを行ってきました。

これを行うためのより良い方法、またはこれらの変換を支援する標準ライブラリ関数はありますか? int や文字列などのリストを取得できる関数を呼び出すたびに、4 行の余分なコードを記述するのはばかげているように思えます。

0 投票する
5 に答える
97740 参照

go - スライスを格納するインターフェイス上の範囲{}

を受け入れる関数があるシナリオを考えますt interface{}。がスライスであると判断された場合、そのtスライスをどのようにrange上書きしますか?

遊び場の例に行く:http://play.golang.org/p/DNldAlNShB

0 投票する
3 に答える
14749 参照

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が定義上参照オブジェクトであるという事実と関係があると思います。

0 投票する
9 に答える
150253 参照

go - 2つのスライスが等しいかどうかを確認する

2つのスライスが等しいかどうかを確認するにはどうすればよいですか?

0 投票する
4 に答える
99690 参照

go - 名前で構造体プロパティにアクセスする

これは、動作していない単純な go プログラムです。

エラー:

prog.go:18: 無効な操作: v[property] (タイプ *Vertex のインデックス)

私が望むのは、その名前を使用して Vertex X プロパティにアクセスすることです。私がやればv.Xうまくいきますが、うまくいきv["X"]ません。

誰かがこれを機能させる方法を教えてもらえますか?

0 投票する
2 に答える
17975 参照

arrays - Golang: スライスのタイプを取得する

任意の配列の型を取得するためにreflectパッケージを使用していますが、取得しています

配列から型を取得するにはどうすればよいですか? 値から取得する方法を知っています。

http://play.golang.org/p/sNw8aL0a5f

0 投票する
16 に答える
483305 参照

go - Goでオブジェクトの型を見つける方法は?

Goでオブジェクトの型を見つけるにはどうすればよいですか? Python では、typeofオブジェクトの型を取得するために使用します。Goでも同様に、同じことを実装する方法はありますか?

これが私が繰り返しているコンテナです:

この場合、文字列の配列であるオブジェクト行のタイプを取得できません。