要打印一个变量的类型,你可以使用fmt.Printf 函数格式中的%T 动词。这是最简单和最值得推荐的打印变量类型的方法。
package main
import (
"fmt"
)
func main() {
t1 := "text"
t2 := []string{"apple", "strawberry", "blueberry"}
t3 := map[string]float64{"strawberry": 3.2, "blueberry": 1.2}
t4 := 2
t5 := 4.5
t6 := true
fmt.Printf("t1: %T\n", t1)
fmt.Printf("t2: %T\n", t2)
fmt.Printf("t3: %T\n", t3)
fmt.Printf("t4: %T\n", t4)
fmt.Printf("t5: %T\n", t5)
fmt.Printf("t6: %T\n", t6)
}
另外,你也可以使用反射包reflect 中的TypeOf 函数。然而,它使用了复杂而昂贵的运行时反射,所以如果你只是需要打印变量的类型,最好使用第一种方法。
package main
import (
"fmt"
"reflect"
)
func main() {
t1 := "text"
t2 := []string{"apple", "strawberry", "blueberry"}
t3 := map[string]float64{"strawberry": 3.2, "blueberry": 1.2}
t4 := 2
t5 := 4.5
t6 := true
fmt.Printf("t1: %s\n", reflect.TypeOf(t1))
fmt.Printf("t2: %s\n", reflect.TypeOf(t2))
fmt.Printf("t3: %s\n", reflect.TypeOf(t3))
fmt.Printf("t4: %s\n", reflect.TypeOf(t4))
fmt.Printf("t5: %s\n", reflect.TypeOf(t5))
fmt.Printf("t6: %s\n", reflect.TypeOf(t6))
}
这两种方法都会返回相同的输出:
t1: string
t2: []string
t3: map[string]float64
t4: int
t5: float64
t6: bool