DEV Community

Cover image for How to use Golang local module
JU DaDao
JU DaDao

Posted on

How to use Golang local module

Go module使用邏輯

在project當中依專案大小的不同可能需要將工作分成多個module。跟C以及C++不同,你無法使用相對路徑去做import,你必須import的是package,而package 的dir由go.mod決定。

流程大綱

  1. 假設我現在有一個專案叫做goMd,創建goMd資料夾之後cd進去
  2. 在goMod資料夾下創建main.go
  3. 在專案底下輸入以下指令,進行init後創建go.mod
  4. 假設有兩個module 叫做hello以及note,且分別為不同的package hello以及note
  5. 在main中import,以目前的路徑(goMd) import裡面的package
  6. 執行 main.go

細部講解

最終的結構會如下

fianl result

  1. 創建專案資料夾goMd
  2. 創建main.go
  3. 終端機進入goMd資料夾並且在輸入init 指令。將之後import位置調整至goMd

go init指令

  go mod init goMod 
Enter fullscreen mode Exit fullscreen mode

go.Mod內容

  module goMod

  go 1.22.1

Enter fullscreen mode Exit fullscreen mode

4.
創建你想要import的module。並且設定pakage name用於之後import。這邊創建兩個pakage分別是hello跟note。

先分別創建hello跟note 資料夾在goMd之下

並且在hello 資料夾下創建hello.go,並且這邊先示範加入SayHello() function。package hello。(記住func name開頭必須要大寫才會是全域,之後在main.go 才能夠使用)

  //hello.go
  package hello

  import "fmt"

  func SayHello() {
      fmt.Println("Hello, world!")
  }

Enter fullscreen mode Exit fullscreen mode

note 資料夾下創建note.go,並且這邊先示範加入Sayhello2() function。package note。(記住func name開頭必須要大寫才會是全域,之後在main.go 才能夠使用)

  //note.go
  package note

  import "fmt"

  func Sayhello2() {
    fmt.Println("hello test")
  }
Enter fullscreen mode Exit fullscreen mode

創建完之後的結構如下

folder construction

5.
在main中import,記住import根目錄位置會跟go.mod內的位置相同,且import為import pakge的名字。import後直接指定pakage呼叫他裡面的function後可以直接使用

  //main.go
  package main

  import (
    "fmt"
    "goMod/hello"
    "goMod/note"
  )

  func main() {
    hello.SayHello()
    note.Sayhello2()

    fmt.Println("Main print")
  }
Enter fullscreen mode Exit fullscreen mode

6.
run main.go

final result

Top comments (0)