碰到一个switch case疑惑

windy_ · · 1232 次点击
推荐使用反射 v := reflect.ValueOf(x) switch v.Kind() { case reflect.Bool: fmt.Printf("bool: %v\n", v.Bool()) case reflect.Int, reflect.Int8, reflect.Int32, reflect.Int64: fmt.Printf("int: %v\n", v.Int()) case reflect.Uint, reflect.Uint8, reflect.Uint32, reflect.Uint64: fmt.Printf("int: %v\n", v.Uint()) case reflect.Float32, reflect.Float64: fmt.Printf("float: %v\n", v.Float()) case reflect.String: fmt.Printf("string: %v\n", v.String()) case reflect.Slice: fmt.Printf("slice: len=%d, %v\n", v.Len(), v.Interface()) case reflect.Map: fmt.Printf("map: %v\n", v.Interface()) case reflect.Chan: fmt.Printf("chan %v\n", v.Interface()) default: fmt.Println(x) }
#3
更多评论
你后面的v都应该是 val 啊, v是val的类型,val才是要判断的变量本身。
#1
windy_
君子知命不惧,日日自省
麻烦了解一下switch - type 的语法
#2