Go 语言项目开发实战
孔令飞
腾讯云资深工程师,前Red Hat、联想云工程师
新⼈⾸单¥69.9
2521 人已学习
课程目录
已更新 11 讲 / 共 54 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 从 0 开始搭建一个企业级 Go 应用
免费
课前必学 (3讲)
01 | IAM系统概述:我们要实现什么样的 Go 项目?
02 | 环境准备:如何安装和配置一个基本的 Go 开发环境?
03 | 项目部署:如何快速部署 IAM 系统?
实战第 1 站:规范设计 (7讲)
04 | 规范设计(上):项目开发杂乱无章,如何规范?
05 | 规范设计(下):commit 信息风格迥异、难以阅读,如何规范?
06 | 目录结构设计:如何组织一个可维护、可扩展的代码目录?
07 | 工作流设计:如何设计合理的多人开发模式?
08 | 研发流程设计(上):如何设计 Go 项目的开发流程?
09 | 研发流程设计(下):如何管理应用的生命周期?
10 | 设计方法:怎么写出优雅的 Go 项目?
Go 语言项目开发实战
15
15
1.0x
00:00/00:00
登录|注册

10 | 设计方法:怎么写出优雅的 Go 项目?

孔令飞 2021-06-15
你好,我是孔令飞,今天我们来聊聊如何写出优雅的 Go 项目。
Go 语言简单易学,对于大部分开发者来说,编写可运行的代码并不是一件难事,但如果想真正成为 Go 编程高手,你需要花很多精力去研究 Go 的编程哲学。
在我的 Go 开发生涯中,我见过各种各样的代码问题,例如:代码不规范,难以阅读;函数共享性差,代码重复率高;不是面向接口编程,代码扩展性差,代码不可测;代码质量低下。究其原因,是因为这些代码的开发者很少花时间去认真研究如何开发一个优雅的 Go 项目,更多时间是埋头在需求开发中
如果你也遇到过以上问题,那么是时候花点时间来研究下如何开发一个优雅的 Go 项目了。只有这样,你才能区别于绝大部分的 Go 开发者,从而在职场上建立自己的核心竞争力,并最终脱颖而出。
其实,我们之前所学的各种规范设计,也都是为了写出一个优雅的 Go 项目。在这一讲,我又补充了一些内容,从而形成了一套“写出优雅 Go 项目”的方法论。这一讲内容比较多,但很重要,希望你能花点精力认真掌握,掌握之后,能够确保你开发出一个优秀的 Go 项目。

如何写出优雅的 Go 项目?

那么,如何写出一个优雅Go 项目呢?在回答这个问题之前,我们先来看另外两个问题:
为什么是 Go 项目,而不是 Go 应用?
一个优雅的 Go 项目具有哪些特点?
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《Go 语言项目开发实战》,如需阅读全部文章,
请订阅文章所属专栏新⼈⾸单¥69.9
立即订阅
登录 后留言

精选留言(7)

  • pedro
    一节值回票价!!!
    2021-06-15
    4
  • daz2yy
    很完善的内容!不过,道理其实都懂,或者多多少少看过一些,如果能结合一些实际落地的例子就更好了;也正如老师说的,要求人去按照规范做很难,需要靠工具实现约束;还有比如 CR 的具体操作细节,花费的时间,参与人,CR不通过与通过的情况等。
    2021-06-16
  • 夏夜星语
    golangci-lint 安装失败,换版本为v1.14.0也不行:

    (base) [cody@dev iam]$ go get -u github.com/golangci/golangci-lint/cmd/golangci-lint
    go: downloading github.com/tommy-muehle/go-mnd v1.3.1-0.20200224220436-e6f9a994e8fa
    # github.com/golangci/golangci-lint/pkg/golinters
    ../../../../pkg/mod/github.com/golangci/golangci-lint@v1.40.1/pkg/golinters/gosimple.go:11:40: cannot use simple.Analyzers (type []*"honnef.co/go/tools/analysis/lint".Analyzer) as type map[string]*analysis.Analyzer in argument to setupStaticCheckAnalyzers
    ../../../../pkg/mod/github.com/golangci/golangci-lint@v1.40.1/pkg/golinters/staticcheck.go:11:40: cannot use staticcheck.Analyzers (type []*"honnef.co/go/tools/analysis/lint".Analyzer) as type map[string]*analysis.Analyzer in argument to setupStaticCheckAnalyzers
    ../../../../pkg/mod/github.com/golangci/golangci-lint@v1.40.1/pkg/golinters/stylecheck.go:11:40: cannot use stylecheck.Analyzers (type []*"honnef.co/go/tools/analysis/lint".Analyzer) as type map[string]*analysis.Analyzer in argument to setupStaticCheckAnalyzers
    ../../../../pkg/mod/github.com/golangci/golangci-lint@v1.40.1/pkg/golinters/unused.go:28:3: cannot use unused.Analyzer.Doc (type *"honnef.co/go/tools/analysis/lint".Documentation) as type string in field value
    ../../../../pkg/mod/github.com/golangci/golangci-lint@v1.40.1/pkg/golinters/unused.go:29:28: unused.Analyzer.Requires undefined (type *"honnef.co/go/tools/analysis/lint".Analyzer has no field or method Requires)
    ../../../../pkg/mod/github.com/golangci/golangci-lint@v1.40.1/pkg/golinters/unused.go:31:31: unused.Analyzer.Run undefined (type *"honnef.co/go/tools/analysis/lint".Analyzer has no field or method Run)

    作者回复: 直接官网下载二进制文件吧,最新版可能有问题

    2021-06-15
  • 不明真相的群众
    我来催更了
    2021-06-15
  • 旋风
    在mac下安装工具,有两个安装出错了:
    1. golangci-lint
    出错信息:
    github.com/golangci/golangci-lint@v1.40.1/pkg/golinters/gosimple.go:11:40: cannot use simple.Analyzers (type []*"honnef.co/go/tools/analysis/lint".Analyzer) as type map[string]*analysis.Analyzer in argument to setupStaticCheckAnalyzers
    2. rts
    这是rts安装时的出错信息:
    github.com/galeone/rts@v0.0.0-20200630094249-3f55e3ef7720/rts_private.go:145:32: not enough arguments in call to gojson.Generate
    have (io.ReadCloser, func(io.Reader) (interface {}, error), string, string, []string, bool)
    want (io.Reader, gojson.Parser, string, string, []string, bool, bool)

    作者回复: 最新版本,可能有问题,可以直接下载github上编译好的二进制文件。或者clone下来自己编译

    2021-06-15
  • 惟新
    我来 催更了。
    2021-06-15
  • YangYi乐1990
    期待下一讲~😂😂😂
    2021-06-15
收起评论
7
返回
顶部