Golang有类型常量和无类型常量的区别

 更新时间:2023年04月04日 10:44:10   作者:知其黑、受其白  
本文主要介绍了Golang有类型常量和无类型常量的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

场景

在 Go 语言中,常量分为有类型常量和无类型常量。

// 有类型常量
const VERSION string = "v1.0.0"

// 无类型常量
const RELEASE = 3

那么他们有什么区别呢?

当你把有无类型的常量,赋值给一个变量的时候,无类型的常量会被隐式的转化成对应的类型。

package main
import "fmt"

func main() {
    const RELEASE = 3

    var x int16 = RELEASE
    var y int32 = RELEASE
    fmt.Printf("type: %T \n", x) //type: int16
    fmt.Printf("type: %T \n", y) //type: int32 
}

可要是有类型常量,不就会进行转换,在赋值的时候,类型检查就不会通过,从而直接报错。

package main
import "fmt"
func main() {
    const RELEASE int8 = 3

    var x int16 = RELEASE //cannot use RELEASE (type int8) as type int16 in assignment
    var y int32 = RELEASE //cannot use RELEASE (type int8) as type int32 in assignment
    fmt.Printf("type: %T \n", x) 
    fmt.Printf("type: %T \n", y) 
}

解决的方法是进行显式的转换。

package main
import "fmt"
func main() {
    const RELEASE int8 = 3

    var x int16 = int16(RELEASE) 
    var y int32 = int32(RELEASE) 
    fmt.Printf("type: %T \n", x)  // type: int16
    fmt.Printf("type: %T \n", y)  // type: int32
}

到此这篇关于Golang有类型常量和无类型常量的区别的文章就介绍到这了,更多相关Golang有类型常量和无类型常量内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Go语言单元测试超详细解析

    Go语言单元测试超详细解析

    本文介绍了了Go语言单元测试超详细解析,测试函数分为函数的基本测试、函数的组测试、函数的子测试,进行基准测试时往往是对函数的算法进行测验,有时后一个算法在测试数据的基量不同时测试出的效果会不同我们需要对不同数量级的样本进行测试,下文需要的朋友可以参考下
    2022-02-02
  • Go语言leetcode题解953验证外星语词典示例详解

    Go语言leetcode题解953验证外星语词典示例详解

    这篇文章主要为大家介绍了Go语言leetcode题解953验证外星语词典示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • Go1.18新特性工作区模糊测试及泛型的使用详解

    Go1.18新特性工作区模糊测试及泛型的使用详解

    这篇文章主要为大家介绍了Go 1.18新特性中的工作区 模糊测试 泛型使用进行详细讲解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • Go语言动态并发控制sync.WaitGroup的灵活运用示例详解

    Go语言动态并发控制sync.WaitGroup的灵活运用示例详解

    本文将讲解 sync.WaitGroup 的使用方法、原理以及在实际项目中的应用场景,用清晰的代码示例和详细的注释,助力读者掌握并发编程中等待组的使用技巧
    2023-11-11
  • Go使用database/sql操作数据库的教程指南

    Go使用database/sql操作数据库的教程指南

    Go 语言中,有一个名为database/sql的标准库,提供了统一的编程接口,使开发人员能够以一种通用的方式与各种关系型数据库进行交互,本文就来和大家讲讲它的具体操作吧
    2023-06-06
  • go中switch语句的用法详解

    go中switch语句的用法详解

    在Go中的switch语句类似于C、C++、Java、JavaScript和PHP中的switch语句,不同之处在于它只执行匹配的case,因此不需要使用break语句,下面我们就一起来学习一下switch语句的具体使用吧
    2023-09-09
  • Golang标准库之errors包应用方式

    Golang标准库之errors包应用方式

    Go语言的errors包提供了基础的错误处理能力,允许通过errors.New创建自定义error对象,error在Go中是一个接口,通过实现Error方法来定义错误文本,对错误的比较通常基于对象地址,而非文本内容,因此即使两个错误文本相同
    2024-10-10
  • Golang中unicode码和中文的互相转换函数使用

    Golang中unicode码和中文的互相转换函数使用

    这篇文章主要为大家介绍了Golang中unicode码和中文的互相转换函数使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • go语言反射的基础教程示例

    go语言反射的基础教程示例

    这篇文章主要为大家介绍了go语言反射的基础教程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • Mac下Vs code配置Go语言环境的详细过程

    Mac下Vs code配置Go语言环境的详细过程

    这篇文章给大家介绍Mac下Vs code配置Go语言环境的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-07-07

最新评论