惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
月光博客
月光博客
aimingoo的专栏
aimingoo的专栏
Google DeepMind News
Google DeepMind News
Recent Announcements
Recent Announcements
MyScale Blog
MyScale Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
S
SegmentFault 最新的问题
Hugging Face - Blog
Hugging Face - Blog
Martin Fowler
Martin Fowler
WordPress大学
WordPress大学
F
Fortinet All Blogs
小众软件
小众软件
D
Docker
U
Unit 42
博客园 - 聂微东
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
爱范儿
爱范儿
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
IT之家
IT之家
云风的 BLOG
云风的 BLOG
博客园 - 司徒正美
有赞技术团队
有赞技术团队
腾讯CDC

Oskyla 烹茶室

修复 Joplin on KDE 菜单栏显示问题 Copy Fail:Linux 内核 2017 年至今的高危漏洞(附临时缓解方案) | CVE-2026-31431 Hermes Agent — 在 K3s / K8s 中运行指南 在 K3s 节点上安装并使用 nerdctl Mouser:轻量开源的罗技鼠标驱动替代方案 Claude Opus 4.7:优缺点与评测信息汇总 openFuyao NPU-Operator故障排查 openFuyao 2603 共测测试报告 openFuyao InferNex AI推理集成部署 310P(300I Pro) 环境问题记录及解决 ceph mon Operation not permitted 问题解决 Ascend 310P + openFuyao + NPU-Operator 故障排查 KDE Plasma6 禁用全局菜单,恢复正常应用菜单 终极指南:在 Linux 裸机服务器上快速部署 Moltbot (原 Clawbot) 并集成飞书 Windows 配置 Claude Code 解决 settings.json 不生效 Windows 配置 Claude Code 全流程 2025-12-31 | 年终总结 AI 生图精品提示词|第二期:城市星球 AI 生图精品提示词|第一期 Kubernetes kubectl --raw 使用指南 彻底解决阿里云和 tailscale 冲突 2025-10-21 | 沉淀思维 macOS 单独为鼠标或触控板开启自然滚动 2025-10-16 | 负载高低 2025-10-15 | 睡眠周期 2025-10-14 | 转换情绪与独立观点 go 拉取 gitcode.com 私有 mod Git 将某个文件恢复到其他分支的状态 SSH 通过跳板机连接 lxc 使用 chronyc 构建 ntp 服务 2025-10-13 | 独立思考于未来能源
Go 语言命名规范整理
Tianlun Song · 2022-11-08 · via Oskyla 烹茶室

本文 首发于 🌱 煎茶转载 请注明 来源

GO 语言精简命名规范汇集.

本文内容整理自《Go语言精进之路:从新手到高手的编程思想、方法和技巧

1》。

GO 语言语法简单,容易上手,相关的代码风格约束也相对较少。但查阅网络发现排在前几的都总结的不是很好。

正好前期阅读了 《Go语言精进之路:从新手到高手的编程思想、方法和技巧1》 这本书,受益匪浅,特将其中命名规范部分做了整理分享出来,详情还是建议大家找来原书阅读。

下面是较重要的几条规范,推荐阅读。

1、包

对于Go中的包(package),一般建议以小写形式的单个单词命名。

原则:

  1. 包名应尽量与包导入路径(import path)的最后一个路径分段保持一致;
  2. 仅要考虑包自身的名字,还要兼顾该包导出的标识符(如变量、常量、类型、函数等)的命名。

2、变量、类型、函数和方法

Go语言官方要求标识符命名采用驼峰命名法(CamelCase)

原则:

  1. 变量、类型、函数和方法命名时以简单、短小为首要原则;
  2. 保持变量声明与使用之间的距离越近越好,或者在第一次使用变量之前声明该变量;
  3. 变量名字中不要带有类型信息(原因见原则2);
  4. 保持简短命名变量含义上的一致性,例如:
  • i -> index,
  • v -> value,
  • k -> key,
  • t -> time,
  • b -> byte

特征:

  • 循环和条件变量多采用单个字母命名(如 i, j, k, v );
  • 函数/方法参数返回值变量以单个单词单个字母为主;
  • 方法的命名以单个单词为主;
  • 函数多以多单词的复合词进行命名;
  • 类型多以多单词的复合词进行命名。

3、常量

原则:

  1. 常量多使用多单词组合的方式命名;
  2. 可以对名称本身就是全大写的特定常量使用全大写的名字 (如 PI )。

举例:

// $GOROOT/src/net/http/request.go

const (
    defaultMaxMemory = 32 << 20 // 32 MB
)

// $GOROOT/src/math/sin.go
const (
    PI4A = 7.85398125648498535156E-1  // 0x3fe921fb40000000,
    PI4B = 3.77489470793079817668E-8  // 0x3e64442d00000000,
    PI4C = 2.69515142907905952645E-15 // 0x3ce8469898cc5170,
)

// $GOROOT/src/syscall/zerrors_linux_amd64.go
// 信号
const (
    SIGABRT   = Signal(0x6)
    SIGALRM   = Signal(0xe)
    SIGBUS    = Signal(0x7)
    SIGCHLD   = Signal(0x11)
    ...
)

4、接口

原则:

  1. Go语言的惯例是用“ 方法名+er ”命名;
  2. Go语言推荐尽量定义小接口,并通过接口组合的方式构建程序。

举例:

// $GOROOT/src/io/io.go

type Writer interface {
    Write(p []byte) (n int, err error)
}

type Reader interface {
    Read(p []byte) (n int, err error)
}

type Closer interface {
    Close() error
}

type ReadWriteCloser interface {
    Reader
    Writer
    Closer
}

总结

GO 语言语法相对简单,在降低代码风格方面做了很多工作。命名规范的意义在于遵守和使用,还是要在平时多多注意,有空多阅读标准库或其他优质代码,学习代码风格,体会其背后的深刻内涵。

本文是对《Go语言精进之路:从新手到高手的编程思想、方法和技巧1》书中命名规范部分做了整理总结,详细了解请查看原书内容。

本文内容仅用于学习之用,若有侵权请与我联系,立即删除。

参考文献