ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Go语言入门笔记:命名规范、变量常量、数据类型(一)

Go语言入门笔记:命名规范、变量常量、数据类型(一)

1. 变量与标识符命名规范

标识符驼峰命名规则

  • 标识符采用驼峰命名法 (CamelCase)
    • 小驼峰:首字母小写,仅包内可用,包外无法访问
    • 大驼峰:首字母大写,包外可见,可以被其他包调用
  • 简单循环变量可以使用i、j、k、v等单字母
  • Go 语言倾向简短命名:条件、循环变量优先使用单个字母或者短单词
  • 常量使用驼峰即可,不需要像其他语言全大写加下划线;约定俗成的常量如PI可以全大写
  • 函数 / 方法参数、返回值尽量使用单个单词或者单字母;函数、类型可以多个单词
  • 方法因为绑定类型调用,名字尽量简短,优先单个单词
  • 包名:全部小写,单个单词;包名和导入路径最后一段保持一致
  • 接口:优先单个单词,习惯加er后缀;Go 推崇小接口,支持接口组合

命名风格对比

  • UserName大驼峰,首字母大写
  • userName小驼峰,首字母小写
  • user_name蛇形命名(Go 不推荐)

Go 关键字

官方文档:The Go Programming Language Specification - The Go Programming Language

break default func interface select case defer go map struct chan else goto package switch const fallthrough if range type continue for import return var

预定义标识符(语言内置)

官方文档:The Go Programming Language Specification - The Go Programming Language

// 内置类型 any bool byte comparable complex64 complex128 error float32 float64 int int8 int16 int32 int64 rune string uint uint8 uint16 uint32 uint64 uintptr // 内置常量 true false iota // 零值标识 nil // 用于指针、切片、map、channel等引用类型 // 内置函数,不要随意覆盖重定义 append cap close complex copy delete imag len make new panic print println real recover

识符概念

  • 标识符:给值起的名字,源代码中用来指代数据;编译之后标识符消失,全部替换成内存地址。
  • 变量标识符:指代的值可以修改。关键字:var
  • 常量标识符:定义时值就固定,不可修改。关键字:const,定义时必须赋初值

字面常量:就是原始的值本身,不是变量名。例如100、"hello"、'A',Go 的布尔、rune、整型、浮点、复数、字符串都属于字面常量,也叫无类型常量 (untyped constant)。

字符与字符串区分:

  • '1':字符,单引号,只能放一个字符,本质 rune (int32)
  • "1":字符串,双引号,可以 0 个、一个或者多个字符

Go 是强类型语言,类型检查严格。

整型取值范围

  • int8:8 位有符号,占 1 字节,范围-128 ~ 127
  • uint8:8 位无符号,占 1 字节,范围0 ~ 255

iota 批量常量

iota:常量组计数器,每一行常量声明 iota 自增 1,从 0 开始;只在 const () 批量块内生效。

package main import "fmt" func main() { // iota从0开始,每一行+1 const ( a = iota + 1 // iota=0 → 1 b // 继承表达式 iota+1,iota=1 →2 c // iota=2 →3 _ // 空白标识符,丢弃值,iota=3 d // iota=4 →5 t = 100 // 赋值为100,不再使用iota _ // 丢弃,iota=6 e // 继承上一行t=100 → e=100 ) fmt.Println(a, b, c, d, e) //输出:1 2 3 5 100 }
package main import "fmt" func main() { const ( m = 100 // iota=0 n // 继承 m=100,iota=1 a = iota * 2 // iota=2 →4 b // iota=3 →6 c // iota=4 →8 d // iota=5 →10 ) fmt.Println(m, n, a, b, c, d) //输出:100 100 4 6 8 10 }

⚠️重要注意:

  1. const常量的值编译期必须完全确定,只能使用字面常量。
  2. ❌ Go 不支持const c = [2]int{1,2},数组内容运行期可变,编译期无法确定,不能作为常量。
  3. ❌const a;错误,常量定义必须初始化。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进