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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何將錯(cuò)誤作為值而不是引用返回

如何將錯(cuò)誤作為值而不是引用返回

Go
慕村225694 2022-06-27 16:30:25
我正在創(chuàng)建一個(gè)自定義錯(cuò)誤并將其用作函數(shù)返回:type MyError struct {    Name string}func (me *MyError) Error() string {    return me.Name + " is my error"}返回自定義錯(cuò)誤的函數(shù):func (anyStruct *AnyStruct) Validate() error {    // if Any verification {        return &MyError{Name: "MyError"}    //}}為什么我不能作為值而不是引用返回?如果我嘗試作為值返回:return MyError{Name: "MyError"}編輯器的 linter 抱怨一個(gè)錯(cuò)誤:不能使用(MyError 文字)(MyError 類型的值)作為返回語句中的錯(cuò)誤值:缺少方法錯(cuò)誤此外,我對(duì)返回引用但函數(shù)簽名沒有通知將返回指針這一事實(shí)感到困惑:func (anyStruct *AnyStruct) Validate() error {代替func (anyStruct *AnyStruct) Validate() *error {
查看完整描述

1 回答

?
尚方寶劍之說

TA貢獻(xiàn)1788條經(jīng)驗(yàn) 獲得超4個(gè)贊

error是一個(gè)接口類型,因此可以用作錯(cuò)誤的類型必須實(shí)現(xiàn)該Error()方法。您的代碼中實(shí)現(xiàn)的類型Error()是*MyError(即指向MyError 的指針)。返回時(shí)Validate(),返回值被隱式轉(zhuǎn)換為錯(cuò)誤 - 只有*MyError(而不是MyError)可以轉(zhuǎn)換為error.


要執(zhí)行您想要的操作,您應(yīng)該使用MyErrorimplement Error()。


func (me MyError) Error() string {

    return me.Name + " is my error"

}

請(qǐng)注意,如果函數(shù)返回error返回值,則返回的任何類型都將存儲(chǔ)在接口中(記住error是接口類型)。和大多數(shù)類型一樣,指針可以存儲(chǔ)在接口中。還要小心使用“引用”類型這個(gè)詞——在 Go 中,它通常指的是內(nèi)部包含指針的類型(接口、映射等),盡管我猜它也包括指針。


查看完整回答
反對(duì) 回復(fù) 2022-06-27
  • 1 回答
  • 0 關(guān)注
  • 123 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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