例えば、
go
1package main 2 3import ( 4 "fmt" 5) 6 7func main() { 8 fmt.Println("Hello, playground") 9 a := []int{1, 2, 3} 10 b := []string{"a", "b", "c"} 11 targets := []interface{}{a, b} 12 printSlices(targets) 13} 14 15func printSlices(targets []interface{}) { 16 c := len(targets) 17 18 for i := 0; i < c; i++ { 19 fmt.Println(targets[i]) 20 } 21}
とした時、[]interface{}
というスライスの中には[]intや[]string
といったスライスが入っています。
ただこの実装だとprintSlicesにわたす[]interface{}
には単なるintやstringも入れることができます。
printSlicesの中でreflectを使ってスライスか確認することは可能ですが、その前にスライスでないものが[]interface{}
に入る時点でエラーを通知されるようなそんな仕組みはできないでしょうか。
例えば
func printSlices(targets []sliceableInterface{}) {
というのを理想としています。
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/26 14:33
2018/04/27 03:57