使用go module導入本地包


前言

  Go語言沒有實現像Python那樣實現靈活的導入本地包與模塊的機制,在使用Go開發時遇到了本地包的相互導入問題,這里寫一個demo總結一下。

在同一項目中的情況

  項目的目錄結構如下:其中mypackage包中的go腳本分別是主項目需要導入的函數;主項目是根目錄下的那個main.go文件。

  代碼如下:

pack1.go
package mypackage

import (
    "fmt"
    "time"
)

// 記得函數名大寫
func Now2() {
    fmt.Println("in pack2 Now>>>",time.Now())
}
pack2.go
package main

import (
    "fmt"
    "moduleDemo/mypackage" // 導入同一項目下的mypackage包
)
func main() {
    mypackage.Now()
    mypackage.Now2()
    fmt.Println("main...")
}
main.go

  如果我們直接運行main.go中的代碼會上報下面這樣的錯誤:

  我們需要使用go module做一下下面處理,在項目的根目錄執行:

go mod init moduleDemo

  生成一個go.mod文件,里面的內容為:

module moduleDemo

go 1.14

  然后執行代碼即可出來想要的結果,整個過程如下:

 

在不同項目中的情況

  項目如下:run1包中的main.go想要導入mypackage中的腳本的函數。

   pack1.go與pack2.go與上面的代碼一樣,main.go的代碼如下:

package main

import (
    "fmt"
    "mypackage"
)

func main()  {
    mypackage.Now()
    mypackage.Now2()
    fmt.Println("run1...")
}
run1/main.go

  首先我們需要在mypackage包的目錄下執行命令:

go mod init mypackage

  接着進入run1目錄,執行module命令:

go mod init run1

  生成的文件結構如下:

  當然有這些還不夠,我們需要在run1目錄下的go.mod文件中完善成下面這樣:

module run1

go 1.14

require "mypackage" v0.0.0
replace "mypackage" => "../mypackage"

  然后執行run1中的代碼即可:

參考博客

Go語言之依賴管理

go module 基本使用

go mod init報錯及解決

Go中獲取當前日期信息和時間戳

如何使用go module導入本地包

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM