我在Go中有一个程序,我希望在一堆二进制文件中编译,每个二进制文件都有不同的 const
值 . 更清楚的是,我有类似的东西:
const wordLen = 6
type knowledge [wordLen]byte
这里, wordLen
与值6相关联,但是我希望有不同的二进制文件,值为5到10.我可以将它变为变量,然后使用切片而不是数组,但这会产生巨大的性能影响我的软(是的,我试过) .
我希望在 go build
参数上有一些构建标记,以指示 wordLen
对于给定二进制文件的值 . 那么,(尽可能惯用)的方式是什么呢?
2 回答
它并没有解决你的确切问题,但它可以解决其他问题,所以我添加强制性你可以使用go编译器的
-ldflags
选项:但它有两个缺点:
仅适用于字符串
仅适用于变量
是的,这可以使用Build Constraints .
您可以使用
-tags
标志向go build
提供这些约束的列表 .例:
main.go
foo.go
bar.go
使用不同的标记编译代码会得到不同的结果: