[解決済み] スライスを格納する interface{} 上の範囲
2022-09-11 02:19:18
質問
を受け付ける関数があるとする。
t interface{}
. と判断された場合
t
がスライスであると判断された場合、どのようにすれば
range
をそのスライスの上に置くのですか?
func main() {
data := []string{"one","two","three"}
test(data)
moredata := []int{1,2,3}
test(data)
}
func test(t interface{}) {
switch reflect.TypeOf(t).Kind() {
case reflect.Slice:
// how do I iterate here?
for _,value := range t {
fmt.Println(value)
}
}
}
Go Playgroundの例です。 http://play.golang.org/p/DNldAlNShB
どのように解決するのですか?
私は
reflect.ValueOf
で、スライスであれば
Len()
そして
Index()
を取得するための値で
len
を、あるインデックスにあるスライスや要素の これを行うには、範囲演算を使用することはできないと思います。
package main
import "fmt"
import "reflect"
func main() {
data := []string{"one","two","three"}
test(data)
moredata := []int{1,2,3}
test(moredata)
}
func test(t interface{}) {
switch reflect.TypeOf(t).Kind() {
case reflect.Slice:
s := reflect.ValueOf(t)
for i := 0; i < s.Len(); i++ {
fmt.Println(s.Index(i))
}
}
}
Go Playgroundの例です。 http://play.golang.org/p/gQhCTiwPAq
関連
-
[解決済み] スライス表記を理解する
-
[解決済み] Javascriptで文字列の最後の文字を切り取るにはどうしたらいいですか?
-
[解決済み] JavaScriptで配列を複製する最速の方法 - スライス vs. 'for'ループ
-
[解決済み] C#のリフレクションで型がインターフェースを実装しているかどうかを判断する方法
-
[解決済み] スライスのメソッドを含む
-
[解決済み】空のスライスを初期化する正しい方法
-
[解決済み] Goを使って大きなファイルを効率よくダウンロードするにはどうしたらいいですか?
-
[解決済み] オブジェクトのプロパティを二重引用符で囲んで使用するには?
-
[解決済み] 単一値コンテキストにおける複数値
-
[解決済み] Goでスライスを逆に反復処理する方法はありますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン