加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

go语言中的const怎样运用

发布时间:2023-07-12 14:28:05 所属栏目:语言 来源:
导读:  这篇文章主要讲解了“go语言中的const如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“go语言中的const如何使用”吧!

  
  这篇文章主要讲解了“go语言中的const如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“go语言中的const如何使用”吧!
 
  在go语言中,const关键字可定义常量,用于存储不会改变的数据,定义单个常量的语法“const 常量名 = 常量值”,批量定义多个常量的语法“const (常量名1=常量值1 常量名2=常量值2 ...)”。常量是在编译时被创建的,即使定义在函数内部也是如此,并且只能是布尔型、数字型(整数型、浮点型和复数)和字符串型。
 
  Go 语言中使用const关键字定义常量。
 
  常量用于存储不会改变的数据,常量是在编译时被创建的,即使定义在函数内部也是如此,并且只能是布尔型、数字型(整数型、浮点型和复数)和字符串型。由于编译时的限制,定义常量的表达式必须为能被编译器求值的常量表达式。
 
  常量的定义格式和变量的声明语法类似:const name [type] = value,例如:
 
  const pi = 3.14159 // 相当于 math.Pi 的近似值
 
  在Go语言中,你可以省略类型说明符 [type],因为编译器可以根据变量的值来推断其类型。
 
  显式类型定义: const b string = "abc"
 
  隐式类型定义: const b = "abc"
 
  常量的值必须是能够在编译时就能够确定的,可以在其赋值表达式中涉及计算过程,但是所有用于计算的值必须在编译期间就能获得。
 
  正确的做法:
 
  const c1 = 2/3
 
  错误的做法:
 
  const c2 = getNumber() // 引发构建错误: getNumber() 用做值
 
  和变量声明一样,可以批量声明多个常量:
 
  const (
 
      e  = 2.7182818
 
      pi = 3.1415926
 
  )
 
  所有常量的运算都可以在编译期完成,这样不仅可以减少运行时的工作,也方便其他代码的编译优化,当操作数是常量时,一些运行时的错误也可以在编译时被发现,例如整数除零、字符串索引越界、任何导致无效浮点数的操作等。
 
  常量间的所有算术运算、逻辑运算和比较运算的结果也是常量,对常量的类型转换操作或以下函数调用都是返回常量结果:len、cap、real、imag、complex 和 unsafe.Sizeof。
 
  因为它们的值是在编译期就确定的,因此常量可以是构成类型的一部分,例如用于指定数组类型的长度:
 
  const IPv4Len = 4
 
  // parseIPv4 解析一个 IPv4 地址 (d.d.d.d).
 
  func parseIPv4(s string) IP {
 
      var p [IPv4Len]byte
 
      // ...
 
  }
 
  一个常量的声明也可以包含一个类型和一个值,但是如果没有显式指明类型,那么将从右边的表达式推断类型。在下面的代码中,time.Duration 是一个命名类型,底层类型是 int64,time.Minute 是对应类型的常量。下面声明的两个常量都是 time.Duration 类型,可以通过 %T 参数打印类型信息:
 
  const noDelay time.Duration = 0
 
  const timeout = 5 * time.Minute
 
  fmt.Printf("%T %[1]v\n", noDelay)     // "time.Duration 0"
 
  fmt.Printf("%T %[1]v\n", timeout)     // "time.Duration 5m0s"
 
  fmt.Printf("%T %[1]v\n", time.Minute) // "time.Duration 1m0s"
 
  如果是批量声明的常量,除了第一个外其它的常量右边的初始化表达式都可以省略,如果省略初始化表达式则表示使用前面常量的初始化表达式,对应的常量类型也是一样的。例如:
 
  const (
 
      a = 1
 
      b
 
      c = 2
 
      d
 
  )
 
  fmt.Println(a, b, c, d) // "1 1 2 2"
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!