1

を返す関数があるとしましょうinterface{}。しかし、アイテムの返品はある種のスライスであることは知っています. そのスライスの長さをどのように決定できますか? これが私が試したサンプルコードですが、それらはすべてコンパイルエラーを引き起こします。

package main

import (
  "log"
  "reflect"
)
func SomeKindOfSlice() interface{} {
  return []int64{0,1,2,3,4,5,6,7,8,9}
}
func main() {
  slice := SomeKindOfSlice()
  /*log.Println(reflect.TypeOf(slice).Len())
  log.Println(reflect.TypeOf(slice).Type().Len())
  log.Println(reflect.ValueOf(slice).Type().Len())
  log.Println(reflect.ValueOf(slice).Elem().Type().Len())
  */
  log.Println(reflect.ValueOf(slice).Elem().Type().Len())
}

slice長さを見つけるためだけに変数を具体的に型アサートする強引な方法を避けたいと思います。

4

1 に答える 1