Go语言技巧 · Zablog

zablog.me · · 1899 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

一句话技巧

  • 把你面向对象的大脑扔到家里吧,去拥抱接口。@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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package main
import (
"log"
"os"
)
type Job struct {
Command string
*log.Logger
}
func NewJob(command string) *Job {
return &Job{command, log.New(os.Stderr, "Job: ", log.Ldate)}
}
func main() {
NewJob("demo").Print("starting now...")
}

把代码分解到不同的package中

参考这篇博客重构Go代码,第一部分就讲了package的组织。


参考文献

  1. GO BOOTCAMP - Everything you need to know to get started with Go : Tips and Tricks
  2. 论语
  3. refactoring Go code
  4. Alternate Ways of Importing Packages

有疑问加站长微信联系(非本文作者)

本文来自:zablog.me

感谢作者:zablog.me

查看原文:Go语言技巧 · Zablog

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1899 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传
X
登录和大家一起探讨吧