各种笔记
Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

60 wiersze
3.2 KiB

  1. # 常量
  2. 基本类型的字面量表示(除了false和true 他们是预声明的有名常量) 都属于无名常量或者叫字面常量
  3. 在Go中有些值的类型是不确定的, 这些值称为不确定值,对于大多数不确定值来说, 他们各自有一个默认类型, 除了声明的nil, nil是没有默认的类型的
  4. 与不确定类型相对应的就是类型确定值
  5. 一个字面(常)量的默认类型取决于它的它为何种字面量形式:
  6. 一个字符串字面量的默认类型是预声明的 string 类型。
  7. 一个布尔字面量的默认类型是预声明的 bool 类型。
  8. 一个整数型字面量的默认类型是预声明的 int 类型。
  9. 一个rune字面量的默认类型是预声明的 rune (亦即 int32 )类型。
  10. 一个浮点数字面量的默认类型是预声明的 float64 类型。
  11. 如果一个字面量含有虚部字面量,则此字面量的默认类型是预声明的 complex128 类型。
  12. ## 类型转换
  13. 对于一个类型不确定常量值 v ,有两种情形显式转换 T(v) 是合法的:
  14. 1.v 可以表示为(第6章) T 类型的一个值。 转换结果为一个类型为 T 的类型确定常量值。
  15. 2.v 的默认类型是一个整数类型( int 或者 rune ) 并且 T 是一个字符串类型。 转换 T(v) 将 v 看作
  16. 是一个Unicode码点。 转换结果为一个类型为 T 的字符串常量。 此字符串常量只包含一个Unicode
  17. 码点,并且可以看作是此Unicode码点的UTF-8表示形式。 对于不在合法的Unicode码点取值范围
  18. 内的整数 v , 转换结果等同于字符串字面量 "\uFFFD" (亦即 "\xef\xbf\xbd" )。 0xFFFD 是
  19. Unicode标准中的(非法码点的)替换字符值。 (但是请注意,今后的Go版本可能只允许rune或
  20. 者byte整数被转换为字符串 ? 。 从Go官方工具链1.15版本开始, go vet 命令会对从非rune和非
  21. byte整数到字符串的转换做出警告。)
  22. # 变量
  23. 包级别的变量在声明的时候依赖关系将影响他们的初始化顺序
  24. # 常量表达式
  25. 当一个运算表达式所涉及的是所有操作都是常量的时候,此表达式称为一个常量表达式
  26. 一个常量表达式的估值是在编译阶段进行的。一个常量表达式的估值依然是一个常量。
  27. 如果一个表达式中涉及到的操作数中至少有一个不为常量,则此表达式称为非常量表达式
  28. 类型确定的有名常量
  29. const x float32 = 3.14
  30. 常量声明中的自动补全
  31. const (
  32. X float32 = 3.14
  33. Y // 这里必须只有一个标识符
  34. Z // 这里必须只有一个标识符
  35. A, B = "Go", "language"
  36. C, _
  37. // 上一行中的空标识符是必需的(如果
  38. // 上一行是一个不完整的常量描述)。
  39. )
  40. 自定补全为
  41. const (
  42. X float32 = 3.14
  43. Y float32 = 3.14
  44. Z float32 = 3.14
  45. A, B = "Go", "language"
  46. C, _ = "Go", "language"
  47. )
  48. # 在常量声明中使用iota
  49. iota是Go中预声明的一个特殊的有名常量 iota被预声明为0, 但是在编译阶段并非恒定