Golang中如何列出包及其版本
Golang中如何列出包及其版本 如何列出包的版本?
我找不到相关信息。我原以为它会在 go list 命令下。
4 回复
完全不清楚你想要做什么。你想列出哪些包(模块?)的哪些版本?你想在哪里进行这个操作?
更多关于Golang中如何列出包及其版本的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
例如,当我执行这个命令时,我获取到了所有的包/模块:
go list ...
有没有办法查看每个包/模块的版本?
在Go中,可以使用 go list -m -versions <module-path> 命令列出模块的所有可用版本。例如:
# 列出标准库 fmt 的所有版本(实际是 go 版本)
go list -m -versions std
# 列出第三方模块如 github.com/gin-gonic/gin 的所有版本
go list -m -versions github.com/gin-gonic/gin
# 列出当前模块的所有依赖及其版本
go list -m all
# 列出特定模块的当前版本和可用版本
go list -m -versions -u github.com/gin-gonic/gin
如果需要以编程方式获取,可以使用 go list -m -json -versions <module-path> 并解析JSON输出:
package main
import (
"encoding/json"
"fmt"
"os/exec"
)
type ModuleInfo struct {
Path string `json:"Path"`
Versions []string `json:"Versions,omitempty"`
}
func main() {
cmd := exec.Command("go", "list", "-m", "-json", "-versions", "github.com/gin-gonic/gin")
output, err := cmd.Output()
if err != nil {
fmt.Println("Error:", err)
return
}
var info ModuleInfo
if err := json.Unmarshal(output, &info); err != nil {
fmt.Println("JSON parse error:", err)
return
}
fmt.Printf("Module: %s\n", info.Path)
fmt.Println("Available versions:")
for _, v := range info.Versions {
fmt.Println(" ", v)
}
}
对于当前项目的依赖,使用 go list -m all 会显示所有直接和间接依赖及其选定的版本。

