gpt4 book ai didi

go - 有没有办法在 Go 中的构建时定义常量?

转载 作者:IT王子 更新时间:2023-10-29 01:11:23 28 4
gpt4 key购买 nike

我有一个 Go 程序,我想编译成一堆二进制文件,每个二进制文件都有一个定义不同的 const 值。更清楚地说,我有类似的东西:

const wordLen = 6
type knowledge [wordLen]byte

这里,wordLen 与值 6 关联,但我想要不同的二进制文件,值范围从 5 到 10。我可以将它设为一个变量,然后使用 slice 而不是一个数组,但这会对我的软件产生巨大的性能影响(是的,我试过了)。

我希望在 go build 参数上有一些构建标记,以指示给定二进制文件的 wordLen 的值。那么,执行此操作的(尽可能惯用的)方法是什么?

最佳答案

是的,这可以使用 Build Constraints .

您可以使用 -tags 标志向 go build 提供这些约束的列表。

例子:

main.go

package main

import "fmt"

func main() {
fmt.Println(f)
}

foo.go

// +build foo

package main

const f = "defined in foo.go"

bar.go

// +build bar

package main

const f = "defined in bar.go"

用不同的标签编译代码会得到不同的结果:

$ go build -tags foo
$ ./main
defined in foo.go
$ go build -tags bar
$ ./main
defined in bar.go

关于go - 有没有办法在 Go 中的构建时定义常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36151298/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com