3 回答
TA贡献1794条经验 获得超7个赞
我不知道 Go 但在我使用的任何其他语言中,我们将数据(如大静态文本)保留在源之外。首先检查是否没有框架可以解决您的问题——大多数语言都有非常强大的测试生态系统。
你关心性能。你衡量过对性能的影响吗?它只是几个 kb 的文件
TA贡献1777条经验 获得超3个赞
我不认为这是一个依赖于语言的问题。在代码中嵌入大量任何种类的刺会损害它的可读性。
至于解决方案,我会考虑两个方面: 1. 字符串内容是否真的是静态的 - 如果您认为它不会改变,我相信将其放入另一个 .go 文件是最好的解决方案。引入更多的代码来处理内容的加载只会让事情变得更加复杂。2. 部署 - Go 最好的事情之一是拥有一个可以运行的单个文件,无需任何外部依赖。如果您从外部源加载字符串的内容,则会损害该内容。下一个需要运行测试的人必须知道这个文件......
TA贡献1757条经验 获得超7个赞
有几种可用的软件包可以处理此类问题,最突出的是 Jim Teeuwen 出色的go-bindata。它的主要作用是获取输入文件并将这些文件的内容存储到常量中。当然,你可以使用这个包。
当然,您可以手动执行此操作。但是,为了整理实际代码,我会将这些常量放入单独的文件中。所以基本上,我data.go看起来像这样
package yours
const (
FirstText =`
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy
eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam
voluptua. At vero eos et accusam et justo duo dolores et ea rebus.
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy
eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam
voluptua. At vero eos et accusam et justo duo dolores et ea rebum.`
SecondText = `
Lorem ipsum dolor sit met, consetetur sadipscing elitr, sed diam nonumy
eirmod tempor invidunt ut labore et dolore magna aliquyam`
)
因此,您可以参考这些文本,因为它们是全局的,但它们不会使您的代码混乱。
这种方法应该适用于我知道的每种编程语言。
- 3 回答
- 0 关注
- 137 浏览
添加回答
举报