我在golang中的包中定义了一个常量:
package services
const (
Source = "local"
)
我想让其他包无法访问,而无需将包导入我的其他模块。我怎么能这样做呢?
答案 0 :(得分:7)
您无法在不导入服务的情况下引用services.Source。
但是,您可以通过在另一个恰好具有相同值的包中创建新常量来避免依赖性,并通过测试进行验证。也就是说,您的测试导入服务,但您的生产代码没有。 stdlib在这里和那里执行此操作以避免一些依赖。
// services.go
package services
const Source = "local"
// foo.go
package foo
const Source = "local"
// foo_test.go
package foo
import (
"services"
"testing"
)
func TestSource(t *testing.T) {
if Source != services.Source {
t.Error("Source != services.Source")
}
}