开发者

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

开发者 https://www.devze.com 2023-04-05 10:58 出处:网络 作者: 知其黑、受其白
场景 在 Go 语言中,常量分为有类型常量和无类型常量。 // 有类型常量 const VERSION string = \"v1.0.0\"

场景

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

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

// 无类型常量
const RELEASE = 3

那么他们有什么区别呢?

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

package main
import "fmt"

func main() {
  const RELEASE = 3

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

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

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 assignmenpythont
  fmt.Printf("type: %T \n", x)
  fmt.Printf("type: %T \n", y)
}

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

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

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

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

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号