当前位置:  首页>> 技术小册>> GO面试指南

在 Go 语言中,常量有类型常量和无类型常量之分。类型常量的值具有确定的类型,而无类型常量的值没有确定的类型。下面是一个示例代码:

  1. package main
  2. import (
  3. "fmt"
  4. )
  5. func main() {
  6. // 类型常量
  7. const a int = 10
  8. const b string = "hello"
  9. fmt.Printf("%T %v\n", a, a) // 输出:int 10
  10. fmt.Printf("%T %v\n", b, b) // 输出:string hello
  11. // 无类型常量
  12. const c = 10
  13. const d = "hello"
  14. fmt.Printf("%T %v\n", c, c) // 输出:int 10
  15. fmt.Printf("%T %v\n", d, d) // 输出:string hello
  16. }

在上面的代码中,我们首先定义了两个类型常量 a 和 b,其中 a 的类型为 int,值为 10,b 的类型为 string,值为 “hello”。接着,我们分别使用 %T 和 %v 格式化字符串输出常量的类型和值。

然后,我们定义了两个无类型常量 c 和 d,其中 c 的值为 10,类型未指定,d 的值为 “hello”,类型也未指定。接着,我们同样使用 %T 和 %v 格式化字符串输出常量的类型和值。

从输出结果可以看出,类型常量的类型和值都是确定的,而无类型常量的类型是未指定的,但其值在使用时会隐式转换为需要的类型。比如,在使用无类型常量 c 的时候,它会被隐式转换为 int 类型,而在使用无类型常量 d 的时候,它会被隐式转换为 string 类型。需要注意的是,由于无类型常量的值在使用时可能会被隐式转换,因此在进行数值计算时,最好使用类型常量,以避免因类型转换带来的错误。


该分类下的相关小册推荐: