Go 在新包中使用标志值

Go 在新包中使用标志值,go,func,Go,Func,我写在戈兰上。我创建标志并在主包中使用它。但现在我不再在新的包装中使用它了。我该怎么做? myFlag=flagSet.Int(“myFlag”,0,“Test”)——这是我在主包中编写的。 我没有从控制台更改新包中的变量。但是我不知道在新的包中写些什么来使用这个标志。作为一个直接的答案,您可以使用导出的全局变量作为标志值。这些可以从其他软件包中使用 例如: 如果这是在包foo中全局定义的,则可以从导入foo的其他包中使用foo.Verbose 在风格上,导出的全局变量应该少用,从主包导出一个

我写在戈兰上。我创建标志并在主包中使用它。但现在我不再在新的包装中使用它了。我该怎么做?
myFlag=flagSet.Int(“myFlag”,0,“Test”)
——这是我在主包中编写的。
我没有从控制台更改新包中的变量。但是我不知道在新的包中写些什么来使用这个标志。

作为一个直接的答案,您可以使用导出的全局变量作为标志值。这些可以从其他软件包中使用

例如:

如果这是在包
foo
中全局定义的,则可以从导入
foo
的其他包中使用
foo.Verbose


在风格上,导出的全局变量应该少用,从主包导出一个变量以在另一个包中使用是一种特殊的代码味道。您正在使包的行为依赖于其他地方的全局状态,使其脆弱且难以测试。您的包最好具有某种配置
struct
,并在从main使用时填充它,可能使用main的标志

var Verbose = flag.Bool("v", false, "show verbose progress message")