在golang中的包之间共享常量

时间:2018-04-11 14:10:22

标签: go

我有以下代码,需要cmd

中的多个包
PATH_SEP = string(os.PathSeparator)

我的项目结构如下

go/src/my proj
-cmd
--runners
--otherpackage
-- package2
-- constants
--…. 

在常量我把代码

PATH_SEP = string(os.PathSeparator)
const2 etc

并且在runners和package2 / 3等中我使用此常量。

可以吗?否则我需要复制其他包的代码。

2 个答案:

答案 0 :(得分:1)

你可以按照你的描述使用常量,它没有任何问题。但它不那么直观。
我如何做到这一点是有一个根包go/src/my proj -cmd -constants --runners --otherpackage --package2 --…. ,这些可以在项目的任何地方使用。

UPDATE AcccountsTable 
SET ConsecutiveDays = 
    CASE WHEN CAST(LogDate as Date) = CAST(DATEADD(DAY, -1, GETDATE()) As Date) 
              AND ConsecutiveDays < 28 THEN 
        ConsecutiveDays + 1 
    WHEN CAST(LogDate as Date) = CAST(GETDATE() as Date) THEN
        ConsecutiveDays 
    ELSE 
        1 
    END,
    ChallengesCompleted = 
    CASE WHEN ConsecutiveDays = 28 
              AND CAST(LogDate as Date) = CAST(DATEADD(DAY, -1, GETDATE()) As Date)
    THEN 
         ChallengesCompleted + 1
    ELSE
         ChallengesCompleted
    END,
    LogDate = GETDATE()
WHERE AccID = @identity

答案 1 :(得分:0)

我建议使用常量字段声明struct,并在要使用常量的任何包中导入该结构。

package cmd
type Constants struct{
    const1 int
    const2 int
}

最好有一个单独的常量文件。创建一个名为global.go的文件,其中包含要在不同包中使用的所有常量结构,以便您的代码更清晰。

注意:我们要求在多个文件中共享常量,因此最好导入包含常量的包。而不是打包包含方法和其他细节,即使我们不需要它们。