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。
選擇傳播錯誤和生成錯誤消息的方法取決于應用程序的規(guī)模和復雜性。您顯示的錯誤樣式,使用一個 int,然后使用一個函數對其進行解碼,非常 C-ish。
這種風格的部分原因是:
缺少多值返回(與 Go 不同),
需要使用簡單類型(易于傳播),以及
使用函數將其轉換為文本(與 Go 的錯誤界面不同),以便可以更改本地語言字符串。
對于帶有簡單錯誤字符串的小型應用程序。我將包的錯誤字符串放在包文件的開頭,然后返回它們,如果需要使用某些數據完成字符串,可能使用 errors.New(...) 或 fmt.Errorf。
這種“int”風格的錯誤報告并沒有像 Go 的錯誤界面那樣靈活。error 接口允許我們構建信息豐富的錯誤結構,以返回有用的信息,而不僅僅是一個 int 值或字符串。
這意味著不同的包可以產生實現(xiàn) Error 接口的不同實類型。我們不需要在整個包中就單一錯誤類型達成一致。所以 error 是一個可以很容易地傳播的接口,就像一個 int,然而,錯誤的真實類型可以比 int 豐富得多。錯誤生成(實現(xiàn)錯誤)可以根據我們的需要集中或分布式,不像 strerror() 風格的函數難以擴展。
- 2 回答
- 0 關注
- 221 瀏覽
添加回答
舉報