Like Share Discussion Bookmark Smile

J.J. Huang   2020-11-02   Golang   瀏覽次數:

Go - 第五章 | 建立 Go 模塊

前言

翻譯真的很難,程式語言反而覺得不難⋯⋯
發現官方文件直接翻譯,對於我來說太多會翻譯不好的地方。

註:原文連結

簡要

這是教的學的地一部分介紹了Go基礎的函數。如果你剛開始學Go,請確保你已經看完了Go入門教學,其中介紹了go指令、go模塊和簡單的go程式碼。

在這個教學中,你會建立兩個模塊。第一個是從其他的庫或是應用程式導入。第二個是呼叫於第一個。

這個教學順序包括了六個簡單的主題分別說明了語言不同的部分。

  • 建立一個模塊-編寫一個包含可以從另一個模塊調用的功能的小模塊。
  • 從另一個模塊調用你的代碼-導入並使用新模塊。
  • 返回並處理錯誤-添加簡單的錯誤處理。
  • 返回隨機問候語-處理切片中的數據(Go的動態大小的數組)。
  • 返回多人的問候語 -在地圖中存儲鍵/值對。
  • 添加測試-使用Go的內置單元測試功能來測試你的代碼。
  • 編譯並安裝應用程序-在本地編譯並安裝代碼。

先決條件

  • 有一編寫程式的經驗. 這邊的程式碼非常的簡單,但是他會幫助你了解有關於functions,loops,arrays
  • 編輯程式碼的工具. 可以使用任何的文字編輯器。大多數的編輯器基本上都支援Go。比較受歡迎的編輯器為VSCode(free)GoLand(paid)Vim(free)
  • 命令提示字元(終端機). Go可以運行在LinuxMacPowerShellWindowscmd,於任何終端上。

啟動其他人可以使用的模塊

開始建立Go模塊。在模塊中收集一到多個相關的包用於一組離散且有用的函數。例如,你可以使用包含用於財務分析的函數的包來建立一個模塊,其他編寫財務應用程式的人可以使用你的函數。

Go程式碼分組在包,而包分組在模塊。包的模塊指定了Go運行代碼所需要的上下文,包括編寫代碼的Go版本及其所需的其他模塊集。

在你新增或是更新你的模塊,你會發布新的版本。開發者在模塊中使用的方法,可以導入更新版本,並在推上正式環境前做測試。

  • 開啟命令提示字元並且CD到主目錄
    • LinuxMac
      1
      cd
    • Windows
      1
      cd %HOMEPATH%
  • 建立一個greetings原始碼的目錄
    • 範例
      1
      2
      mkdir greetings
      cd greetings
  • 使用go mod init指令來建立go.mod
    • 執行go mod init指令,為其提供代碼所在模塊的路徑。這裡使用example.com/greetings為模塊的路徑,在正式環境下,這是個可以下載的url
      1
      2
      $ go mod init example.com/greetings
      go: creating new go.mod: module example.com/greetings
    • 使用go mod init指令建立go.mod將你的程式碼標識為可以從其他代碼中使用的模塊。該檔案目前只有包含你的模塊名稱和所使用的Go版本。但是當你新增依賴(意旨:使用其他的函數模塊),那go.mod檔內容將會有使用的模塊版本清單。這樣可以使構建具有可複制性,並使你可以直接控制要使用的模塊版本。
  • 在你的文字編輯器裡面建立一個greetings.go的檔案,並在裡面寫程式碼。
  • 將以下的程式碼複製貼上到greetings.go裡面,並且儲存。
    • 程式碼
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      package greetings

      import "fmt"

      // Hello returns a greeting for the named person.
      func Hello(name string) string {
      // Return a greeting that embeds the name in a message.
      message := fmt.Sprintf("Hi, %v. Welcome!", name)
      return message
      }
      • 這是你第一個模塊的程式碼,這函數返回問候來訪問他的人。下一步你將會寫調用這方法的程式碼
      • 在這個程式碼,你:
        • 宣告一個greetings包以收集相關函數。
        • 實作一個hello函數回傳問候。
          • 這個方法需要一個name的參數其型態為string和定義回傳的型態是string。在Go,名稱由大寫字母開頭的函數可以由不在同包中的函數調用。
        • 宣告一個message變量用於儲存你的問候。
          • Go:=運算符是在一行中聲明和初始化變量的快捷方式(Go使用右側的值確定變量的類型)。從長遠來看,你可能這樣寫:
            1
            2
            var message string
            message = fmt.Sprintf("Hi, %v. Welcome!", name)
        • 使用fmt包的Sprintf函數建立問候消息。Sprintfname參數的值替換為%v格式動詞。插入name參數的值將完成問候語。
        • 將格式化的問候語文本返回給呼叫者。

過程

這邊簡單示範一下上述官方的教學。

註:這邊的路徑使用的是本地某個暫存資料夾做示範。

單字/句子

以下單字,有的其實都看得懂,純粹就是想要加強紀錄、練習發音、翻譯意思。

單字/句子 翻譯
fundamental 基本的
features 特徵
intended 意向的
brief 簡要
illustrate 說明
slices 切片
dynamically-sized 動態大小
multiple
pairs
locally 本地的
prompt 提示
identifies 確定
reproducible 可複制的
direct 直接
capital letter 大寫字母
operator 算子
shortcut 捷徑
initializing 初始化
variable 變量
determine 確定
substitutes 替代品
Inserting 插入

結語

這邊的重點我著重放在go.mod,主要是理解modulepackage的關係。自己動手做了之後,可以初步了解其關係和層級;另外還有在建置一個新的專案的時候,透過go mod init來產生go.mod檔。


註:以上參考了
Golang Documentation