Like Share Discussion Bookmark Smile

J.J. Huang   2020-10-30   Golang   瀏覽次數:次   DMCA.com Protection Status

Go - 第四章 | Go 入門(下)

前言

接續下半部

註:原文連結

簡要

在這個教學, 你將會簡單了解的Go. 在此過程中, 你將:

  • 安裝Go(如果你還沒安裝). (於上一篇介紹完畢)
  • 寫一些簡單的 “Hello, world” 程式碼. (於上一篇介紹完畢)
  • 使用Go指令執行你的程式碼. (於上一篇介紹完畢)
  • 使用Go包發現工具查找可以在你的程式碼中使用的包.
  • 呼叫外部模塊functions.

先決條件

  • 完成上一篇教學內容.

呼叫外部包函數

當你想要使用Go做一些事情的時候,說不定已經有人將其實作並包成一個包,你可以呼叫這個包中的function在你的程式碼裡面。

  • 利用外部模塊提供的方法,使你的輸出訊息更加有趣
    • 訪問pkg.go.dev並且搜尋 “quote” 包。
    • 在搜尋結果中找到並點擊rsc.io/quote包(請暫時先忽略rsc.io/quote/v3)。
    • 在文件(Doc)選項的索引下,請記住你可以使用的function清單. 你將會用到名為Go的函數。
    • 在頁面的頂端,你可以看到quote包是在rsc.io/quote模塊。

你可以使用pkg.go.dev網站找尋已經發佈的模塊,你可以使用這些模塊中包含的function在你的程式碼裡。例如rsc.io/quote包已發布, 讓其他人可以使用它。隨著時間模塊會改善升級,你可以透過升級更新並使用改進後的版本。

  • 在你的Go程式碼中(hello.go),導入rsc.io/quote包並使用go function
    • 你的程式碼應該包括如下:
      1
      2
      3
      4
      5
      6
      7
      8
      9
      package main

      import "fmt"

      import "rsc.io/quote"

      func main() {
      fmt.Println(quote.Go())
      }
  • 將你自己的代碼放在模塊中以跟踪依賴關係。
    • 當你導入其他模塊的包,會在go.mod檔案列出提供這些包的特定模塊和版本。該文件包含在你的程式中,包括在你的源代碼存儲庫中。
    • 要建立go.mod文件。請運行go mod init指令,並為其指定程式碼所在模塊的名稱(這邊使用”hello”即可)。
      1
      2
      $ go mod init hello     
      go: creating new go.mod: module hello
  • 執行你的程式碼去看呼叫的function所產生的訊息。
    • 輸出
      1
      2
      3
      4
      $ go run hello.go
      go: finding module for package rsc.io/quote
      go: found rsc.io/quote in rsc.io/quote v1.5.2
      Don't communicate by sharing memory, share memory by communicating.
    • 請注意,你的程式碼呼叫了Go function,輸出了巧妙的通訊的訊息。

檔案範例

以下檔案內容為此篇文章中所產生的內容參考:

go.mod

1
2
3
4
5
module hello

go 1.15

require rsc.io/quote v1.5.2

go.sum

1
2
3
4
5
6
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c h1:qgOY6WgZOaTkIIMiVjBQcw93ERBE4m30iBm00nkL0i8=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
rsc.io/quote v1.5.2 h1:w5fcysjrx7yqtD/aO+QwRjYZOKnaM9Uh2b40tElTs3Y=
rsc.io/quote v1.5.2/go.mod h1:LzX7hefJvL54yjefDEDHNONDjII0t9xZLPXsUe+TKr0=
rsc.io/sampler v1.3.0 h1:7uVkIFmeBqHfdjD+gZwtXXI+RODJ2Wc4O7MPEh/QiW4=
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=

單字/句子

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

單字/句子 翻譯
implemented 已實施
interesting 有趣
Visit 訪問
quote 引用
Locate 定位
published 已發表
improved 改善的
upgrade 升級
highlighted 突出顯示
tracking 追踪
dependencies 依存關係
specific 具體
providing 提供
those 那些
stays 停留
giving 給予
generated 產生的
Notice 注意
clever 聰明
communication 通訊
designed 設計的
required 需要

結語

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


註:以上參考了
Golang Documentation