2 回答
TA贡献1869条经验 获得超4个赞
回答你的核心问题
您可以使用dot
导入语法将另一个包中导出的符号直接导入包的命名空间 ( godoc ):
import . "models"
这样你就可以直接引用EOK
常量而不用前缀models
.
但是我强烈建议不要这样做,因为它会生成相当不可读的代码。见下文
一般/风格建议
不要使用像
models
. 这被认为是不好的风格,因为它很容易 globber。即使对于仅在内部使用的小型项目,也可以使用类似myname/models
. 见goblog关于您关于错误生成的问题,有用于生成
error
值的函数,例如errors.New
( godoc ) 和fmt.Errorf
( godoc )。有关 go 和错误处理的一般介绍,请参阅goblog
TA贡献1828条经验 获得超13个赞
对于最初的问题,请使用紧凑的包名称,例如 err。
选择传播错误和生成错误消息的方法取决于应用程序的规模和复杂性。您显示的错误样式,使用一个 int,然后使用一个函数对其进行解码,非常 C-ish。
这种风格的部分原因是:
缺少多值返回(与 Go 不同),
需要使用简单类型(易于传播),以及
使用函数将其转换为文本(与 Go 的错误界面不同),以便可以更改本地语言字符串。
对于带有简单错误字符串的小型应用程序。我将包的错误字符串放在包文件的开头,然后返回它们,如果需要使用某些数据完成字符串,可能使用 errors.New(...) 或 fmt.Errorf。
这种“int”风格的错误报告并没有像 Go 的错误界面那样灵活。error 接口允许我们构建信息丰富的错误结构,以返回有用的信息,而不仅仅是一个 int 值或字符串。
这意味着不同的包可以产生实现 Error 接口的不同实类型。我们不需要在整个包中就单一错误类型达成一致。所以 error 是一个可以很容易地传播的接口,就像一个 int,然而,错误的真实类型可以比 int 丰富得多。错误生成(实现错误)可以根据我们的需要集中或分布式,不像 strerror() 风格的函数难以扩展。
- 2 回答
- 0 关注
- 173 浏览
添加回答
举报