我在 Mac 12+ 上升级到 Go 1.18。
“go build”失败并出现如下错误:
# golang.org/x/sys/unix
../../gopath/pkg/mod/golang.org/x/sys@v0.0.0-20200116001909-b77594299b42/unix/syscall_darwin.1_13.go:25:3:
//go:linkname must refer to declared function or variable
../../gopath/pkg/mod/golang.org/x/sys@v0.0.0-20200116001909-b77594299b42/unix/zsyscall_darwin_amd64.1_13.go:27:3:
//go:linkname must refer to declared function or variable
../../gopath/pkg/mod/golang.org/x/sys@v0.0.0-20200116001909-b77594299b42/unix/zsyscall_darwin_amd64.1_13.go:40:3:
//go:linkname must refer to declared function or variable
../../gopath/pkg/mod/golang.org/x/sys@v0.0.0-20200116001909-b77594299b42/unix/zsyscall_darwin_amd64.go:28:3:
//go:linkname must refer to declared function or variable
../../gopath/pkg/mod/golang.org/x/sys@v0.0.0-20200116001909-b77594299b42/unix/zsyscall_darwin_amd64.go:43:3:
//go:linkname must refer to declared function or variable
../../gopath/pkg/mod/golang.org/x/sys@v0.0.0-20200116001909-b77594299b42/unix/zsyscall_darwin_amd64.go:59:3:
//go:linkname must refer to declared function or variable
../../gopath/pkg/mod/golang.org/x/sys@v0.0.0-20200116001909-b77594299b42/unix/zsyscall_darwin_amd64.go:75:3:
//go:linkname must refer to declared function or variable
../../gopath/pkg/mod/golang.org/x/sys@v0.0.0-20200116001909-b77594299b42/unix/zsyscall_darwin_amd64.go:90:3:
//go:linkname must refer to declared function …Run Code Online (Sandbox Code Playgroud) 我遇到了go新模块系统的问题,因为我想定义一个本地模块并将其导入主程序中.本地程序包驻留在主程序包/根文件夹的文件夹中.想象一下以下的项目结构$GOPATH.
./main.go
package main
import "fmt"
import "example.com/localModule/model"
func main() {
var p = model.Person{name: "Dieter", age:25}
fmt.Printf("Hello %s\n", p.name)
}
Run Code Online (Sandbox Code Playgroud)
./model/person.go
package model
type Person struct {
name string
age int
}
Run Code Online (Sandbox Code Playgroud)
在根文件夹中,我通过调用初始化了一个模块
go mod init example.com/localModule
Run Code Online (Sandbox Code Playgroud)
在model/文件夹中,然后通过调用初始化子模块
go mod init example.com/localModule/model
Run Code Online (Sandbox Code Playgroud)
在根文件夹中调用以下命令失败.
$ go get
go build example.com/localModule/model: no Go files in
$ go build
main.go:4:8: unknown import path "example.com/localModule/model": cannot find module providing package example.com/localModule/model
Run Code Online (Sandbox Code Playgroud)
go get的错误消息被切断了,我不会错误地解析它.
我不打算推动模块到服务器,并与只需要引用本地包的方式model,所以我选择了example.com/localModule/ …
我正在使用 mono 存储库,并在项目树 (istio) 下下载某些工具。运行go get -uorgo mod tidy会导致 maingo.mod被不相关的 deps 更新。
如何排除某些 src 子路径以供考虑。
笔记:
这并不能解决问题,因为我想要排除的子目录中确实有 go 文件。
当尝试使用Go 1.18 工具链代替时,您可能会收到错误消息any:interface{}
undeclared name: any (requires version go1.18 or later)
Run Code Online (Sandbox Code Playgroud)
这是为什么?如何解决?在 Go 1.18 中引入any。
我正在尝试Go模块.我的项目需要libarary golang.org/x/net/html,所以我定义了这个go.mod文件:
module github.com/patrickbucher/prettyprint
require golang.org/x/net/html
Run Code Online (Sandbox Code Playgroud)
并编写了这个演示程序来检查编译时是否加载了依赖项:
package main
import (
"fmt"
"log"
"os"
"golang.org/x/net/html"
)
func main() {
doc, err := html.Parse(os.Stdin)
if err != nil {
log.Fatal(err)
}
fmt.Println(doc)
}
Run Code Online (Sandbox Code Playgroud)
当我运行go build时,我收到以下错误消息:
go: errors parsing go.mod:
~/prettyprint/go.mod:3: usage: require module/path v1.2.3
Run Code Online (Sandbox Code Playgroud)
显然,我错过了版本号.但是哪一个拿?我偶然发现了一篇名为Takig Go Modules for Spin的文章,在那里我找到了一个go.mod包含对golang.org/x包的引用的文件示例:
module github.com/davecheney/httpstat
require (
github.com/fatih/color v1.5.0
github.com/mattn/go-colorable v0.0.9
github.com/mattn/go-isatty v0.0.3
golang.org/x/net v0.0.0-20170922011244-0744d001aa84
golang.org/x/sys v0.0.0-20170922123423-429f518978ab
golang.org/x/text v0.0.0-20170915090833-1cbadb444a80
)
Run Code Online (Sandbox Code Playgroud)
作者正在使用版本字符串v0.0.0-20170922011244-0744d001aa84,包括semver indication v0.0.0,时间戳和看起来像git提交ID的东西.
我如何找出那些版本字符串?我猜想那些 …
我正在尝试将https://github.com/appscode/voyager从 glide转换为 go mod。
我收到如下错误:
go: github.com/Sirupsen/logrus@v1.4.1: parsing go.mod: unexpected module path "github.com/sirupsen/logrus"
go: error loading module requirements
Run Code Online (Sandbox Code Playgroud)
我如何找出这个旧的 Sirupsen 模块的来源?
我正在尝试理解 Go 模块并创建一个简单的 hello world 程序。去版本:1.16.2
/project1
/project1/main.go
/project1/helpers/helpers.go
Run Code Online (Sandbox Code Playgroud)
helpers.go将包含一些实用方法,例如:
package ???
import "fmt"
func DoSomething() {
fmt.Println("Doing something in helpers.go")
}
Run Code Online (Sandbox Code Playgroud)
main.go将使用这样的方法helpers.go:
package main
import "??"
func main() {
helpers.DoSomething()
}
Run Code Online (Sandbox Code Playgroud)
VSCode 不允许我这样做,并且 .vscode 上有红色下划线helpers。
我在这里缺少什么?我怎样才能实现这个目标?
编辑 1:添加 go.mod 和包名称:
所以我跑进go mod init helpers文件/helpers夹并得到了这个:
/project1/helpers/helpers.go
/project1/helpers/go.mod
Run Code Online (Sandbox Code Playgroud)
go.mod
module helpers
go 1.16
Run Code Online (Sandbox Code Playgroud)
我main.go现在的样子是这样的:
package main
import (
"fmt"
"helpers"
)
func main() {
fmt.Println("blah")
helpers.DoHelperMethod()
}
Run Code Online (Sandbox Code Playgroud)