Go 語言必備技能——加快你的工作效率

有隻黑白貓發表於2019-12-24

一句話技巧

把你物件導向的大腦扔到家裡吧,去擁抱介面。
學習如何使用Go的方式做事,不要把別的的程式設計風格強行用在Go裡面。
多用介面總比少用好。
擁抱這種簡潔、並行、工整的語言。
閱讀官網golang.org上所有的文件,真是棒呆了。
別忘了用gofmt。
多讀原始碼。
學習工具和元件,然後創造你自己的!碼程式碼和學程式碼一樣對成功必不可少。
學而不思則罔,思而不學則殆。《論語》

引入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 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的組織。

以工程Gobot為例,它可以被分割為一個核心package和一些其他package。gobot的開發者們準備每個部分放在自己的package裡。經過討論,他們選擇把所有的官方庫放在同一個repository下,讓import路徑變得乾淨而富有邏輯。

所以,他們不打算把路徑設定為:

github.com/hybridgroup/gobot
github.com/hybridgroup/gobot-sphero
github.com/hybridgroup/gobot-...

而是設定為瞭解更多

釘釘掃碼進群,和阿里雲及各界大佬一起學習哦~

Go語言必備技能——加快你的工作效率

相關文章