首頁 >後端開發 >Golang >我可以將 Go 庫和 CLI 捆綁在同一目錄中嗎?

我可以將 Go 庫和 CLI 捆綁在同一目錄中嗎?

Barbara Streisand
Barbara Streisand原創
2024-12-02 20:09:15667瀏覽

Can I Bundle a Go Library and CLI in the Same Directory?

您可以將函式庫和 CLI 捆綁在同一目錄中嗎?

擁有一個目錄,其中包含庫(導出函數)和命令列介面(CLI 可執行檔)提出了它是否實用的問題。當 go 編譯器需要具有“main”函數的套件來執行程式以及具有其函數的程式庫時,就會出現問題。

問題:多個套件

正如提供的範例所示,如果「main」和庫包共存於同一目錄中,則 go編譯器會抱怨在同一目錄中尋找多個套件

解決方案:巢狀套件

不是將套件維護在同一目錄中,一個簡單的解決方案是在父目錄中建立一個新的子目錄來容納函式庫或CLI 套件。請記住更新您的導入以反映包的新位置。

巢狀套件的範例

在下面修改後的範例中,「a」套件被移到「so-multipack」目錄中的新子目錄「 a」:

so-multipack/
    a/
        a.go
    main.go

已更新main.go

package main

import "../so-multipack/a"

func main() {
    a.Hello()
}

更新了a/a.go

package a

import "fmt"

func Hello() {
    fmt.Println("hello from a")
}

編譯成功

使用更新的目錄結構,現在可以運行go 指令成功:

go run main.go
# Output: hello from a
go build
# Creates a "so-multipack" executable

透過將套件嵌套在同一父目錄中,我們可以成功容納函式庫和 CLI 執行檔。

以上是我可以將 Go 庫和 CLI 捆綁在同一目錄中嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn