如何在golang中的所有包中访问全局常量?

i2byvkas  于 2023-05-27  发布在  Go
关注(0)|答案(1)|浏览(106)

我在golang中的一个包中定义了一个常量:

package services

const (
   Source = "local"
)

我想让其他包可以访问这个常量,而不必将这个包导入到我的其他模块中。我该怎么做?

kkbh8khc

kkbh8khc1#

不导入服务就不能引用服务.源。
但是,您可以通过在另一个包中创建一个恰好具有相同值的新常量来避免依赖性,并使用测试进行验证。也就是说,您的测试导入服务,但您的生产代码不导入。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")
    }
}

相关问题