相关疑难解决方法(0)

Golang条件编译

我在Go 1中遇到条件编译问题.

这是我的测试代码.有什么我误解了"// + build"约束和"-tags"标志吗?

main1.go

// +build main1
package main

import (
    "fmt"
)

func main() {
    fmt.Println("This is main 1")
}
Run Code Online (Sandbox Code Playgroud)

main2.go

// +build main2
package main

import (
    "fmt"
)

func main() {
    fmt.Println("This is main 2")
}
Run Code Online (Sandbox Code Playgroud)

当运行"go build"时,我仍然遇到编译错误

$ go build -tags 'main1'
# test
./main2.go:8: main redeclared in this block
        previous declaration at ./main1.go:8
Run Code Online (Sandbox Code Playgroud)

go

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

`//go:build` 和 `// +build` 指令之间有什么区别?

例如,https : //github.com/golang/sys/blob/master/cpu/cpu_gccgo_x86.go#L5

//go:build (386 || amd64 || amd64p32) && gccgo
// +build 386 amd64 amd64p32
// +build gccgo

package cpu
Run Code Online (Sandbox Code Playgroud)

在我看来,作为构建标签,// +build ... 可以很好地工作。
为什么//go:build仍然明确指定?

顺便说一句,很难找到 的手册//go:build,但// +build很容易(https://pkg.go.dev/cmd/go#hdr-Build_constraints

build go go-build

7
推荐指数
1
解决办法
134
查看次数

标签 统计

go ×2

build ×1

go-build ×1