记一次无类型常量的思考

Casso_W · · 442 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

  • 常量可以是有 类型 的也可以是无类型的。字面值常量, true , false , iota 以及一些仅包含无类型的恒定操作数的 常量表达式 是无类型的。
func main() {
    // 无类型常量: 没有显示或者隐式声明其类型的常量,在一些特定的场景下编译器会自动赋予合适的类型
    // 如果操作的双方都是没有声明类型的话,可以进行操作
    fmt.Println('n' / 2.5) // 其中rune类型的基础类型是int32,却能与flaot64 进行除操作(只是看起来的 类型,实际是无类型)

    c := 'b' // 此时变量c的类型是rune类型(已经被声明固定)
    // fmt.Println(c / 2.2) // 此时int32(rune类型) 并不能与float64进行除操作
    fmt.Println(c / 2.0) // 却可以与2.0这个无类型的常量进行除操作,因为2.0可以被int(2.0) == 2, 而2.2却不能int(2.2)
}


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:Casso_W

查看原文:记一次无类型常量的思考

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

442 次点击  
加入收藏 微博
上一篇:螺旋矩阵
下一篇:关于面试
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传