第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

創(chuàng)建跨包可見的常量,可直接訪問

創(chuàng)建跨包可見的常量,可直接訪問

Go
縹緲止盈 2021-11-29 16:01:22
我想Error Codes在一個包中定義我的models。錯誤.gopackage modelsconst{  EOK = iota  EFAILED}我如何在另一個包中使用它們而不將它們稱為models.EOK. 我想直接用作 EOK,因為這些代碼在所有包中都是通用的。這是正確的方法嗎?有沒有更好的選擇?
查看完整描述

2 回答

?
MMTTMM

TA貢獻1869條經驗 獲得超4個贊

回答你的核心問題

您可以使用dot導入語法將另一個包中導出的符號直接導入包的命名空間 ( godoc ):

import . "models"

這樣你就可以直接引用EOK常量而不用前綴models.

但是我強烈建議不要這樣做,因為它會生成相當不可讀的代碼。見下文

一般/風格建議

  1. 不要使用像models. 這被認為是不好的風格,因為它很容易 globber。即使對于僅在內部使用的小型項目,也可以使用類似myname/models. 見goblog

  2. 關于您關于錯誤生成的問題,有用于生成error值的函數,例如errors.Newgodoc ) 和fmt.Errorfgodoc )。有關 go 和錯誤處理的一般介紹,請參閱goblog


查看完整回答
反對 回復 2021-11-29
?
慕田峪7331174

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() 風格的函數難以擴展。


查看完整回答
反對 回復 2021-11-29
  • 2 回答
  • 0 關注
  • 221 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號