小编typ*_*182的帖子

Mac 上的 Go 1.18 构建错误:“unix/syscall_darwin.1_13.go:25:3: //go:linkname 必须引用声明的函数或变量”

我在 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)

macos go

127
推荐指数
2
解决办法
4万
查看次数

使用模块时,Go get找不到本地包

我遇到了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/ …

module go go-modules

24
推荐指数
2
解决办法
2万
查看次数

停止 go mod 工具解析某些目录

我正在使用 mono 存储库,并在项目树 (istio) 下下载某些工具。运行go get -uorgo mod tidy会导致 maingo.mod被不相关的 deps 更新。

如何排除某些 src 子路径以供考虑。

笔记:

这并不能解决问题,因为我想要排除的子目录中确实有 go 文件。

module go go-modules

13
推荐指数
1
解决办法
7116
查看次数

当我使用any而不是interface{}时,为什么会收到“未声明的名称:any(需要版本go1.18或更高版本)”?我正在使用Go 1.18

当尝试使用Go 1.18 工具链代替时,您可能会收到错误消息anyinterface{}

undeclared name: any (requires version go1.18 or later)
Run Code Online (Sandbox Code Playgroud)

这是为什么?如何解决?在 Go 1.18 中引入any

go go-modules

8
推荐指数
1
解决办法
2万
查看次数

转到模块:找出所需包的版本

我正在尝试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的东西.

我如何找出那些版本字符串?我猜想那些 …

go go-modules

7
推荐指数
4
解决办法
4663
查看次数

如何找到导致“Sirupsen/logrus”与“sirupsen/logrus”意外模块路径错误的依赖关系?

我正在尝试将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 go-modules

6
推荐指数
1
解决办法
3525
查看次数

使用 Go 模块创建项目

我正在尝试理解 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)

go go-modules

0
推荐指数
1
解决办法
1551
查看次数

标签 统计

go ×7

go-modules ×6

module ×2

macos ×1