前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >快来看!你的Go代码还能更优雅

快来看!你的Go代码还能更优雅

作者头像
闫同学
发布2025-03-19 19:21:00
发布2025-03-19 19:21:00
7700
代码可运行
举报
文章被收录于专栏:扯编程的淡扯编程的淡
运行总次数:0
代码可运行

Go语言官方维护的代码评审指南(https://go.dev/wiki/CodeReviewComments),总结了 Go 项目开发中常见的代码问题及最佳实践。它提供了一系列具体建议,涵盖命名规范(如变量名简洁性)、错误处理方式(直接返回而非包装日志)、接口设计原则(避免过度抽象)、并发模式(如 channel 使用陷阱)、性能优化点(减少内存分配)等场景,旨在帮助开发者遵循 Go 社区约定俗成的代码风格和设计哲学,确保代码符合 Go 语言"简单、明确、高效"的核心思想,提升项目的可维护性和一致性。

这篇文章我们就来说一说官方指南里没有的几个代码规范,希望能在大家掌握之后写出的Go代码更加优雅。

代码注释

1)注释两句话以上中间增加空格

比如:

代码语言:javascript
代码运行次数:0
运行
复制
// Sentence one. Sentence two.

错误示例:

代码语言:javascript
代码运行次数:0
运行
复制
// Sentence one.  Sentence two.

2)注释符号后面要有一个空格

比如:

代码语言:javascript
代码运行次数:0
运行
复制
// Sentence.

错误示例:

代码语言:javascript
代码运行次数:0
运行
复制
//Sentence.

此外,注释掉的代码应该没有空格

错误变量命名

比如:

代码语言:javascript
代码运行次数:0
运行
复制
var ErrSomething = errors.New("something went wrong")

错误示例:

代码语言:javascript
代码运行次数:0
运行
复制
var ErrorSomething = errors.New("something went wrong")
var SomethingErr = errors.New("something went wrong")
var SomethingError = errors.New("something went wrong")

方法接收器

如果在中没有用到方法接收器,就要让这一点具有更好的可读性。

比如:

代码语言:javascript
代码运行次数:0
运行
复制
func (foo) method() {
    //...
}

错误示例:

代码语言:javascript
代码运行次数:0
运行
复制
func (f foo) method() {
    //...
}

如果 f 未使用。它更具可读性,因为很明显 foo 的字段或方法没有在 method 中使用。

空字符串检查

正确示例:

代码语言:javascript
代码运行次数:0
运行
复制
if s == "" {
    //...
}

错误示例:

代码语言:javascript
代码运行次数:0
运行
复制
if len(s) == 0 {
     //...
}

一般len方法用于切片上。

flag中的os.Exit(2)

在flag方法中可以不用使用os.Exit(2),比如

代码语言:javascript
代码运行次数:0
运行
复制
flag.Usage = func() {
    //...
}

错误示例:

代码语言:javascript
代码运行次数:0
运行
复制
flag.Usage = func() {
    //...
    os.Exit(2)
}

os.Exit(2)的调用是不必要的,因为flag包已经负责执行此操作。

小总结

Go语言的代码风格不仅关乎个人习惯,更是团队协作的基石。就像建筑工地的施工规范,统一的代码风格能让每个参与者快速理解项目结构,减少沟通成本。良好的风格让代码自带说明书——清晰的错误处理让人一眼看出潜在风险,简洁的接口设计让扩展功能更轻松,规范的并发控制能避免隐蔽的运行时陷阱。这种统一的表达方式,不仅让代码更易维护,更能发挥Go语言静态类型与高效并发的设计优势,让程序既跑得快又不容易"散架"。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-03-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 扯编程的淡 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 代码注释
  • 错误变量命名
  • 方法接收器
  • 空字符串检查
  • flag中的os.Exit(2)
  • 小总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档