大家好,我是煎鱼。 大家在学习 Go 的时候,肯定都学过 “Go 的指针是不支持指针运算和转换” 这个知识点。为什么呢? 首先,Go 是一门静态语言,所有的变量都必须为标量类型。不同的类型不能够进行赋值、计算等跨类型的操作。 那么指针也对应着相对的类型,也在 Compile 的静态类型检查的范围内。同时静态语言,也称为强类型。也就是一旦定义了,就不能再改变它。 错误的示例 func main(){ num := 5 numPointer := &num flnum := (*float32)(numPointer) fmt.Println(flnum) } 输出结果: # command-line-arguments ...: cannot convert numPointer (type *int) to type *float32 在示例中,我们创建了一个 num 变量,值为 5,类型为 int,准备干一番大事。