一句话技巧
- 把你面向对象的大脑扔到家里吧,去拥抱接口。@mikegehard
- 学习如何使用Go的方式做事,不要把别的的编程风格强行用在Go里面。@DrNic
- 多用接口总比少用好。@evanphx
- 拥抱这种简洁、并行、工整的语言。@francesc
- 阅读官网golang.org上所有的文档,真是棒呆了。@vbatts
- 别忘了用
gofmt
。@darkhelmetlive - 多读源代码。@DrNic
- 学习工具和组件,然后创造你自己的!码代码和学代码一样对成功必不可少。@coreyprak
- 学而不思则罔,思而不学则殆。《论语》
引入package的多种方式
有几种非常规方式来引入包(package)。接下来我会使用fmt
来作为例子:
import format "fmt"
- 为fmt
创造一个别名。把代码中所有使用到fmt
的内容用format.
代替fmt.
import . "fmt"
- 允许包内的内容不加fmt
前缀而被被直接引用import _ "fmt"
- 阻止编译器为引入fmt
却不使用里面的内容做引发的警告,执行package中的初始化函数。提醒一句,在这种情况下fmt
是不可调用的
看这篇博客来了解更多细节。
Goimports
命令goimports
可以更新您的Go导入行,添加缺少的行,并删除未引用的引导行。
它拥有和gofmt
(插入式替换)相同的能力,但是goimports
额外增加了修复imports的功能。
组织
Go是一种相对来说易学习的编程语言,但对于开发者来说,起初接触这门语言最困难的事情就是如何组织代码。scaffolding
是人们喜欢Rails
的原因之一,它可以给新晋的开发者清晰的方向,让他们明白在哪里插入代码,应该遵循怎样的编程风格。
作为扩展,Go使用go fmt
这样的工具来提供开发者相同的功能。同样地,Go的编译器非常严格,它不会去编译没有使用的变量,或者没有使用的import声明。
自定义构造函数
我经常听到别人问,“我什么时候应该使用像NewJob
这样的自定义构造函数?”,我的回答是“大多数情形下你没必要这么做”。然而,当你需要在初始化的时候就设置值,且你有一些默认值的时候,这就最好使用一个构造函数。在这个例子中,构造函数就比较有意义了,因此我们用如下的代码可以构建一个默认的logger:
|
|
把代码分解到不同的package中
参考这篇博客重构Go代码,第一部分就讲了package的组织。