How to Write Go Code

來源:互聯網
上載者:User

標籤:疑問   必須   閱讀   pac   packages   修改   Go語言   一級目錄   pack   

本文為官方文檔How to Write Go Code的閱讀總結:https://golang.org/doc/code.html

概覽
  • 介紹一些基本概念和規範。
  • 介紹如何寫package和使用go tool。
代碼結構

go tool要求代碼結構遵循固定的規範。

規範概要
  • 所有go代碼都放在一個workspace下,也就是workspace下包含多個repository。
  • 每個repository可以包含多個package,每個package也可以包含多個go代碼檔案。
  • package所在目錄的路徑就是它的import path。
workspace

預設是$HOME/go,可以通過GOPATH環境變數修改。

  • workspace下的src子目錄用於存放repository源碼。
  • bin子目錄用於存放go tool產生的可執行檔。

注意點:文中說workspace下不應使用軟鏈,原因尚不明確。

GOPATH

GOPATH環境變數的作用是指定workspace的路徑。
可以通過執行go env GOPATH檢查確認當前的workspace設定。

技巧:go env可以查看所有GO環境變數。

import paths

package類型可以分三種:

  • go語言標準庫裡的package。
  • 本地workspace下的package。
  • 遠端repository。

注意點:自己的package不要跟標準庫的package名字相同。

first program/library and using go tool

首先建立一個目錄作為package,然後在這個package下編寫代碼檔案。
文中將代碼分成了兩個類型

  • 待main函數的代碼,叫command source或program。
  • 不帶main函數的代碼,叫package source或library。
go tool
  • 對於command source,執行go install package會編譯產生可執行檔,並安裝到bin子目錄。
  • 對於package source,執行go install package會產生.a目標檔案,放在 pkg子目錄。(本人測試過。)

另說明:文中提到執行go build package會將編譯後的package放在local build cache中,經查1.10以前的版本沒有build cache,按照本人測試機1.9.4版本go help build的說法,對於non-main package,go build package執行完後會刪除目標檔案,因此只起到證明package可以build的作用。

技巧及注意點:

  • go tool命令後面跟的package名,必須是相對src目錄的路徑,不是相對目前的目錄的路徑。
  • 目前的目錄是package時,可以直接執行go tool命令,不用跟package名。
  • go tool只會在出錯時有輸出,因此無輸出就是執行正常。
package name

幾條規則和規範:

  • 所有go代碼檔案第一行必須是package name。
  • 同一個package裡的代碼檔案必須是同一個package name。
  • 按慣例,package name就是import path的最後一級目錄名。
  • 可執行代碼檔案必須是package main。
  • package name沒有必要是唯一的,只需要import path唯一即可。
Test

go語言套件含一個輕量級的測試架構,有兩部分:

  • 一個package:testing。
  • 一個命令:go test package。

規範:

  • 測試代碼檔案以*_test.go命名。
  • import “testing”。
  • 測試函數以TestXXX命名,以*testing.T為參數。
  • 調用t.Error或t.Fail表示失敗。
package stringutilimport "testing"func TestReverse(t *testing.T){}
Remote packages

go get命令會執行fetch,build,install等步驟。
包含remote package的項目且remote package沒被拉到本地時,需要用go get,用go install不行。

疑問
  • rune
參考資料
  • 1.10版本中才出現build cache:https://golang.org/doc/go1.10

How to Write Go Code

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.