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

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

golang 類型轉(zhuǎn)換未按 (I) 預(yù)期工作

golang 類型轉(zhuǎn)換未按 (I) 預(yù)期工作

Go
回首憶惘然 2021-06-17 18:01:51
我正在使用go-flags來(lái)解析命令行選項(xiàng)。根據(jù) go-flags 文檔:“... [如果] 在命令行參數(shù)中指定了 -h 或 --help,將自動(dòng)打印幫助消息。此外,還會(huì)返回特殊的錯(cuò)誤類型 ErrHelp?!蔽艺{(diào)用的方法是:func (p *Parser) Parse() ([]string, error) {我用以下方式調(diào)用它:var opts struct {    // ...}func main() {    parser := flags.NewParser(&opts, flags.Default)    args, err := parser.Parse()文件中定義 ErrHelp 的片段如下所示:type ErrorType uintconst (    // Unknown or generic error    ErrUnknown ErrorType = iota    // Expected an argument but got none    ErrExpectedArgument    // ...    // The error contains the builtin help message    ErrHelp    // ...)// Error represents a parser error. The error returned from Parse is of this// type. The error contains both a Type and Message.type Error struct {    // The type of error    Type ErrorType    // The error message    Message string}// Get the errors error message.func (e *Error) Error() string {    return e.Message}func newError(tp ErrorType, message string) *Error {    return &Error{        Type:    tp,        Message: message,    }}所以他們有這個(gè)自定義的“錯(cuò)誤”類型。在上面的 Parse() 方法中,在內(nèi)部,錯(cuò)誤是用這樣的代碼塊創(chuàng)建的:    help.ShowHelp = func() error {        var b bytes.Buffer        p.WriteHelp(&b)        return newError(ErrHelp, b.String())    }如您所見,newError() 返回“*Error”作為它的類型。但是上面的匿名函數(shù)返回類型“錯(cuò)誤” - 所以這些類型必須兼容。(?)但現(xiàn)在回到最初的問題——我只是想看看我的“err”是否是一個(gè)“錯(cuò)誤”并且成員“Type”是否等于 ErrHelp。所以我試試這個(gè):if err != nil && flags.Error(err).Type == flags.ErrHelp {或者甚至只是這個(gè):fmt.Printf("test:", flags.Error(err))無(wú)論哪種方式,編譯器都會(huì)給我:main.go:37: 無(wú)法將 err(類型錯(cuò)誤)轉(zhuǎn)換為類型 flags.Error但沒有說(shuō)明為什么不能完成這種轉(zhuǎn)換。有任何想法嗎?(我不明白在上面的匿名函數(shù)中“*Error”是如何成功轉(zhuǎn)換為“error”的,而且我更不明白為什么如果它有效然后我不能以其他方式將它轉(zhuǎn)換回來(lái)......這里一定漏掉了一些非常愚蠢的東西,但我沒有看到它是什么。)
查看完整描述

1 回答

  • 1 回答
  • 0 關(guān)注
  • 238 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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