老师请问go声明变量后可以像java一样将变量的类型进行强制转换吗?

老师请问go声明变量后可以像java一样将变量的类型进行强制转换吗?

go在声明变量时可以省略变量的数据类型,如果后面可以将变量的数据类型强制转换,那么go好像和js这种动态语言在声明变量这里好像没什么区别?

正在回答

登陆购买课程后可参与讨论,去登陆

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 就不行。

  • bobby #1

    正解,go初始化虽然不用写类型,不代表没有类型,只是帮你指明了类型而已,但是动态语言是真正的无类型,随时可以换的,go不行

    2023-01-02 15:19:13
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
Go开发工程师全新版
  • 参与学习       526    人
  • 解答问题       606    个

风口上的技术,薪资水平遥遥领先,现在学习正值红利期! 未来3-5年,Go语言势必成为企业高性能项目中不可替代的语言 从基础到项目实战再到重构,对转行人员友好,真正从入门到精通!

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师