在 google.cloud 中达到 1.18

go 1.18 in google.cloud

描述

我正在尝试从 go v1.18 程序安装一个库以访问 Google 云。 以前,使用“go get”命令,但从 1.18 版本开始,它不再可用。 好像是用go install,但是执行命令的时候报错

% go install cloud.google.com/go/bigquery
go: 'go install' requires a version when current directory is not in a module
    Try 'go install cloud.google.com/go/bigquery@latest' to install the latest version

% go install cloud.google.com/go/bigquery@latest
package cloud.google.com/go/bigquery is not a main package

% go install cloud.google.com/go@latest
package cloud.google.com/go is not a main package

环境

% go version
go version go1.18 darwin/amd64

% uname -v
Darwin Kernel Version 21.4.0: Fri Mar 18 00:45:05 PDT 2022; root:xnu-8020.101.4~15/RELEASE_X86_64

% sw_vers
ProductName:    macOS
ProductVersion: 12.3.1
BuildVersion:   21E258

参考

bigquery package - cloud.google.com/go/bigquery - pkg.go.dev

我试过了,

感谢您的支持。

% go mod init cloud.google.com/go

% go get -u cloud.google.com/go/datacatalog
go: added cloud.google.com/go/datacatalog v1.3.0

% go mod tidy
go: downloading google.golang.org/appengine v1.6.7
go: downloading golang.org/x/sys v0.0.0-20220209214540-3681064d5158


% go mod vendor

% go run catalog.go
package command-line-arguments is not a main package

接下来我该做什么?

自行解决。 -> 更改包名称“main”

go install 用于安装软件包中可用的二进制程序。通常是命令行工具。

go get,到go1.18之前都是用来更新包和安装程序的,他们改成拆分成几个程序

似乎没有什么可安装的。此外,主包不是 bigquery,而是 cloud.google.com/go

如果你想安装一个依赖项,如果你使用的是供应商化的mod规则,你可以这样做

$ go get -u cloud.google.com/go/bigquery

$ 去 mod 整洁

$ 去 mod 供应商

如果没有,你可以先运行 go mod init试一下