中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

How to Write Go Code

發布時間:2020-06-12 00:05:35 來源:網絡 閱讀:3745 作者:zxdevops 欄目:編程語言

本文為官方文檔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 stringutil
import "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
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

靖西县| 泸西县| 长子县| 海兴县| 团风县| 岑巩县| 民丰县| 三河市| 崇礼县| 昌邑市| 吉木乃县| 湟中县| 越西县| 广昌县| 萍乡市| 伊春市| 台东市| 贵定县| 长泰县| 阿合奇县| 呼和浩特市| 井冈山市| 五峰| 丽水市| 城固县| 扶余县| 堆龙德庆县| 临安市| 长寿区| 鄂托克前旗| 诸城市| 玉树县| 娄烦县| 本溪市| 如东县| 濉溪县| 齐齐哈尔市| 青川县| 鹿邑县| 越西县| 荥阳市|