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

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

為什么此代碼不會在 flag.IntVar 上返回錯誤?

為什么此代碼不會在 flag.IntVar 上返回錯誤?

Go
紅顏莎娜 2021-06-25 14:01:14
我目前正在閱讀一本關(guān)于 Go 的書,并看到了以下腳本:package mainimport (    "flag"    "fmt"    "log"    "os"    "path/filepath"    "runtime"    "strings")func main() {    runtime.GOMAXPROCS(runtime.NumCPU()) // Use all the machine's cores    log.SetFlags(0)    algorithm,        minSize, maxSize, suffixes, files := handleCommandLine()    if algorithm == 1 {        sink(filterSize(minSize, maxSize, filterSuffixes(suffixes, source(files))))    } else {        channel1 := source(files)        channel2 := filterSuffixes(suffixes, channel1)        channel3 := filterSize(minSize, maxSize, channel2)        sink(channel3)    }}func handleCommandLine() (algorithm int, minSize, maxSize int64,    suffixes, files []string) {    flag.IntVar(&algorithm, "algorithm", 1, "1 or 2")    flag.Int64Var(&minSize, "min", -1,        "minimum file size (-1 means no minimum)")    flag.Int64Var(&maxSize, "max", -1,        "maximum file size (-1 means no maximum)")    var suffixesOpt *string = flag.String("suffixes", "",        "comma-separated list of file suffixes")    flag.Parse()    if algorithm != 1 && algorithm != 2 {        algorithm = 1    }    if minSize > maxSize && maxSize != -1 {        log.Fatalln("minimum size must be < maximum size")    }    suffixes = []string{}    if *suffixesOpt != "" {        suffixes = strings.Split(*suffixesOpt, ",")    }    files = flag.Args()    return algorithm, minSize, maxSize, suffixes, files}我只粘貼了相關(guān)部分,因為這里粘貼太長了。如果需要更多部分或整個部分,我會立即添加。在上面的代碼中,為什么該行flag.IntVar(&algorithm, "algorithm", 1, "1 or 2")沒有返回錯誤?據(jù)我所知,當您使用 時flag.IntVar,您必須algorithm在調(diào)用函數(shù)之前首先定義一個指定為其第一個參數(shù)的變量(在這種情況下) - 否則它會返回一個未定義的錯誤。如果你寫出以下代碼:package mainimport "flag"func main() {    flag.IntVar(&a, "a", 0, "test")}如果你執(zhí)行它,你會得到錯誤undefined: a。所以我想知道為什么第一個代碼(由本書作者編寫并且我實際上嘗試運行)沒有返回錯誤,而第二個卻返回錯誤。供您參考,沒有預(yù)定義的變量或常量init(),腳本中也沒有函數(shù)。我還在handleCommandLine()調(diào)用函數(shù)之前檢查了這兩個函數(shù)main()(即runtime.GOMAXPROCS(runtime.NumCPU())和log.SetFlags(0)),但我很確定前者甚至與這個問題無關(guān)。而且我沒有在關(guān)于后者的文檔中得到它的含義,所以也許它導(dǎo)致了問題?
查看完整描述

1 回答

?
慕姐8265434

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

調(diào)用函數(shù)時會自動創(chuàng)建命名返回值;所以algorithmflag.IntVar()調(diào)用之前已經(jīng)定義了。


查看完整回答
反對 回復(fù) 2021-06-28
  • 1 回答
  • 0 關(guān)注
  • 318 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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