第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何獲取 Go 模塊依賴項(xiàng)的路徑?

如何獲取 Go 模塊依賴項(xiàng)的路徑?

Go
繁花不似錦 2022-08-24 18:42:27
我有兩個(gè)Go模塊,讓我們將它們命名為.example.com/aexample.com/b讓它成為 :example.com/ago.modmodule example.com/ago 1.12require (  example.com/b v0.4.2)在 的根目錄中,有一個(gè)名為 的文件。 需要自動(dòng)生成一些代碼作為其構(gòu)建過程的一部分。此自動(dòng)生成需要讀取 。example.com/bdata.yamlexample.com/adata.yaml我怎樣才能在查詢的目錄中為路徑讀取該文件?我知道下載后,模塊將位于某個(gè)地方,但我不知道如何從那里構(gòu)造路徑,因?yàn)樗恍┎粚儆趯?dǎo)入路徑的字符。我希望有一些子命令或?qū)⑤敵雎窂?,但我在文檔中沒有找到它。example.com/aexample.com/b(go env GOPATH)/pkg/mod!go modgo list我已經(jīng)考慮過通過包含在Go代碼中(是的,我知道,但我現(xiàn)在不想需要Go 1.16),但是當(dāng)我在編譯時(shí)需要它時(shí),我只能在運(yùn)行時(shí)訪問。data.yamlgo-bindata//go:embed
查看完整描述

2 回答

?
慕桂英546537

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超10個(gè)贊

您可以像這樣與標(biāo)志和標(biāo)志一起使用:go list-m-f

go list -m -f '{{.Dir}}' example.com/b

旗幟:-m

導(dǎo)致 go list 列出模塊而不是包。在這種模式下,去列表的參數(shù)可以是模塊,模塊模式(包含...通配符)、版本查詢或特殊模式 all,它與構(gòu)建列表中的所有模塊匹配。如果未指定任何參數(shù),則列出主模塊。

(參考)

旗幟:-f

使用包模板的語(yǔ)法指定輸出的備用格式。使用標(biāo)志時(shí),傳遞給模板的結(jié)構(gòu)為:-m

type Module struct {

    Path      string       // module path

    Version   string       // module version

    Versions  []string     // available module versions (with -versions)

    Replace   *Module      // replaced by this module

    Time      *time.Time   // time version was created

    Update    *Module      // available update, if any (with -u)

    Main      bool         // is this the main module?

    Indirect  bool         // is this module only an indirect dependency of main module?

    Dir       string       // directory holding files for this module, if any

    GoMod     string       // path to go.mod file for this module, if any

    GoVersion string       // go version used in module

    Error     *ModuleError // error loading module }


type ModuleError struct {

    Err string // the error itself

}


查看完整回答
反對(duì) 回復(fù) 2022-08-24
?
jeck貓

TA貢獻(xiàn)1909條經(jīng)驗(yàn) 獲得超7個(gè)贊

您可以像這樣計(jì)算出模塊路徑:


package main


import (

    "fmt"

    "os"

    "path"


    "golang.org/x/mod/module"

)


func GetModulePath(name, version string) (string, error) {

    // first we need GOMODCACHE

    cache, ok := os.LookupEnv("GOMODCACHE")

    if !ok {

        cache = path.Join(os.Getenv("GOPATH"), "pkg", "mod")

    }


    // then we need to escape path

    escapedPath, err := module.EscapePath(name)

    if err != nil {

        return "", err

    }


    // version also

    escapedVersion, err := module.EscapeVersion(version)

    if err != nil {

        return "", err

    }


    return path.Join(cache, escapedPath+"@"+escapedVersion), nil

}


func main() {

    var path, err = GetModulePath("github.com/jakubDoka/mlok", "v0.4.7")

    if err != nil {

        panic(err)

    }


    if _, err := os.Stat(path); os.IsNotExist(err) {

        fmt.Println("you don't have this module/version installed")

    }

    fmt.Println("module found in", path)

}


查看完整回答
反對(duì) 回復(fù) 2022-08-24
  • 2 回答
  • 0 關(guān)注
  • 169 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)