前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Go 语言命名规范整理

Go 语言命名规范整理

作者头像
宋天伦
发布2023-10-20 13:50:08
1860
发布2023-10-20 13:50:08
举报
文章被收录于专栏:fryteafrytea

本文 首发于 🌱 煎茶,请注明 来源。

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

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

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

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

1、包#

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

原则:

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

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

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

原则:

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

特征:

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

3、常量#

原则:

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

举例:

代码语言:javascript
复制
// $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语言推荐尽量定义小接口,并通过接口组合的方式构建程序。

举例:

代码语言:javascript
复制
// $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》书中命名规范部分做了整理总结,详细了解请查看原书内容。

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

参考文献#

注:本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、包#
  • 2、变量、类型、函数和方法#
  • 3、常量#
  • 4、接口#
  • 总结#
  • 参考文献#
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档