我想Error Codes
在一个包中定义我的models
.
error.go
package models const{ EOK = iota EFAILED }
我怎么能在另一个包中使用它们而不用它们作为models.EOK
.我想直接使用EOK,因为这些代码在所有包中都是通用的.
这是正确的方法吗?有更好的选择吗?
您可以使用dot
导入语法将导出的符号从另一个包直接导入到包的名称空间(godoc)中:
import . "models"
这样你就可以直接引用EOK
常量而不用前缀models
.
但是我强烈建议不要这样做,因为它会生成相当难以理解的代码.见下文
不要使用像这样的无前缀的导出路径models
.这被认为是糟糕的风格,因为它很容易被打造.即使对于仅在内部使用的小型项目,也可以使用类似的东西myname/models
.看到goblog
关于错误生成的问题,有生成error
值的函数,例如errors.New
(godoc)和fmt.Errorf
(godoc).有关go和错误处理的一般介绍,请参阅goblog