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

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

在 go 語言中,我可以在結(jié)構(gòu)中定義字符串的允許值和/或僅通過構(gòu)造函數(shù)強制創(chuàng)建嗎?

在 go 語言中,我可以在結(jié)構(gòu)中定義字符串的允許值和/或僅通過構(gòu)造函數(shù)強制創(chuàng)建嗎?

Go
回首憶惘然 2022-12-19 21:08:29
我有一個Direction字符串value類型的結(jié)構(gòu)。Direction應(yīng)該是N、S或。WEtype Direction struct {    value string}受到這個問題的回答的啟發(fā):Does Go have "if x in" construct similar to Python? 我想以有效方式創(chuàng)建 Direction 的一種好方法可以是這個:func NewDirection(direction string) Direction {    switch direction {        case "N","S","W","E": return Direction{direction}    }    panic("invalid direction")}但這對我來說還不夠,因為我仍然可以創(chuàng)建無效的方向:d := Direction{"X"}我還發(fā)現(xiàn)了這篇關(guān)于在 go 中強制使用構(gòu)造函數(shù)的有趣文章。閱讀這篇文章,我可以看出使用另一個包是必要的。我可以在 main 包中有一個“受保護”的結(jié)構(gòu)嗎?
查看完整描述

1 回答

?
神不在的星期二

TA貢獻1963條經(jīng)驗 獲得超6個贊

按照慣例,您幾乎已經(jīng)完成了所有應(yīng)該做的事情:

  • 使字段未導(dǎo)出

  • 提供構(gòu)造函數(shù)

  • 對應(yīng)該使用構(gòu)造函數(shù)的類型發(fā)表評論,并解釋如何處理零值(如果這很重要)

現(xiàn)在包的用戶不能修改該字段,并且 constrictor 的存在清楚地表明應(yīng)該調(diào)用它來創(chuàng)建有效實例。這是標(biāo)準(zhǔn)庫設(shè)定的約定。

當(dāng)然,還有其他方法可以使值無效變得更加困難,但這本質(zhì)上只是在浪費時間,并且為了與想象中的對手進行無法取勝的軍備競賽而使代碼過于復(fù)雜

如果有人不懂該語言并且不閱讀文檔,那么他們總是會找到一種濫用它的方法。如果他們積極地試圖破壞自己,那么您無法阻止他們,也沒有理由阻止他們。

包是 Go 中代碼組織的最小功能單元。例如,無法在文件級別保護字段。即使是同一個包中的文件也能有效地運行,就好像它們的所有代碼都在同一個文件中一樣。因此,與構(gòu)造函數(shù)在同一個包中的任何代碼都將具有與構(gòu)造函數(shù)相同的特權(quán)。


查看完整回答
反對 回復(fù) 2022-12-19
  • 1 回答
  • 0 關(guān)注
  • 87 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號