老师请问go声明变量后可以像java一样将变量的类型进行强制转换吗?
go在声明变量时可以省略变量的数据类型,如果后面可以将变量的数据类型强制转换,那么go好像和js这种动态语言在声明变量这里好像没什么区别?
26
收起
正在回答
1回答
不一样的。Go 声明变量省略类型,只是因为 Go 可以进行类型推断,就是 Go 帮程序员节省了一些工作。变量定义后是可以强制类型转换,但跟动态语言还不一样。比如说,
var f = 3.14 // f 为 float64 var i = int(f) // 因为强制转换类型,i 为 int,值为 3
这上面强转之后,i 的值就已经失去了原来的精度了。再比如:
var s = "Hello" var i = int(s) // 无法编译 s = 3 // 无法编译
一个字符串怎么可能强转为数字,变量 s 定义之后也无法赋值一个数字给它。
但是如果是 JS,那上面的精度丢失、无法编译是不存在的:
var f = 3.14 f = "Hello" // 编译正常
因为 JS 是动态语言,所以变量定义之后,是可以随意赋值任何类型的值的,但 Go 就不行。
Go开发工程师全新版
- 参与学习 526 人
- 解答问题 606 个
风口上的技术,薪资水平遥遥领先,现在学习正值红利期! 未来3-5年,Go语言势必成为企业高性能项目中不可替代的语言 从基础到项目实战再到重构,对转行人员友好,真正从入门到精通!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星