首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何做:从多个包生成字符串常量?

如何做:从多个包生成字符串常量?
EN

Stack Overflow用户
提问于 2019-04-01 08:53:03
回答 2查看 1.2K关注 0票数 2

我有这样的结构:

代码语言:javascript
复制
.foo/bar/constants.go
.foo/constants.go
.main.go 

main.go中,我声明类型:

代码语言:javascript
复制
package agepack
type EventType uint
//go:generate stringer -type EventType
const (
    FirstType EventType iota
    SecondType
    ....
)

在每一个constants.go中,我都有这样的感觉:

代码语言:javascript
复制
package foo
const (
   OneMoreType agepack.EventType = 100 + iota
)

如何从所有包中生成具有值的字符串?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-01 12:03:42

golang.org/x/tools/cmd/stringer不支持这一点。引用其医生的话:

在没有参数的情况下,它处理当前目录中的包。否则,参数必须指定一个包含Go包的目录或一组表示单个Go包的Go源文件。

最简单的解决方案是将所有枚举值放在同一个包中。您可以使用不同的文件,但它们必须在同一个包中。

如果需要/必须使用多个包,则只有在使用不同类型时才能使用stringer,每个类型都定义在列出常量的包中。

票数 2
EN

Stack Overflow用户

发布于 2021-01-27 18:02:57

实际上,在多个包上生成Stringer接口是可能的:更具体地说,在上,包含在目录中的所有包(递归)。只管用

代码语言:javascript
复制
$ go generate ./...

这就像go test ./...一样,它允许递归地执行目录中包含的所有测试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55451280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档