このコードがflag.IntVarでエラーを返さないのはなぜですか?

ブラザード:

私は現在Goの本を読んでいて、次のスクリプトを見ました。

package main

import (
    "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
}

ここに貼り付けるには長すぎるので、関連する部分だけを貼り付けました。さらにパーツまたはパーツ全体が必要な場合は、すぐに追加します。

上記のコードで、行flag.IntVar(&algorithm, "algorithm", 1, "1 or 2")がエラーを返さないのはなぜですか?私が知っている限り、を使用する場合、関数を呼び出す前にflag.IntVar、最初の引数として指定された変数(algorithmこの場合)を最初に定義する必要があります。そうでない場合、未定義のエラーが返されます。

次のコードを書き出すと、

package main
import "flag"
func main() {
    flag.IntVar(&a, "a", 0, "test")
}

それを実行すると、エラーが発生しますundefined: aだから、本の著者が書いて実際に実行しようとした最初のコードが、2番目のコードがエラーを返さないのはなぜかと思います。参考までに、事前定義された変数や定数はなくinit()、スクリプトには関数がありませんまたhandleCommandLine()main()関数を呼び出す前に2つの関数(つまりruntime.GOMAXPROCS(runtime.NumCPU())log.SetFlags(0))をチェックアウトしましたが、前者がこの問題に関係していないことは確かです。そして、後者に関してドキュメントでそれが何を意味するのか理解できなかったので、それが問題を引き起こしているのでしょうか?

真紅 :

名前付きの戻り値は、関数が呼び出されると自動的に作成されます。そのalgorithm前にすでに定義されてflag.IntVar()呼ばれています。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

このコードがnull行列を返さないのはなぜですか?

分類Dev

このコードが文字列を返さないのはなぜですか?

分類Dev

このコードがfalseを返さないのはなぜですか?

分類Dev

KafkaKSQLでDESCRIBEEXTENDEDがエラーShowColumnsを返さないのはなぜですか?

分類Dev

次の解析コードがエラーを返さないのはなぜですか?

分類Dev

execute()がエラー時にtrueを返さないのはなぜですか?

分類Dev

なぜこれがエラーを返さないのですか?

分類Dev

このRubyコードが何も返さないのはなぜですか?

分類Dev

コピー代入関数が何も返さないのに、コンパイラがエラーを起こさないのはなぜですか?

分類Dev

このFirebaseFunction Promiseが正しいエラーを返さないのはなぜですか?

分類Dev

なぜこのコードはNullPointerExceptionを返さないのですか?

分類Dev

このコードでエラーがスローされないのはなぜですか?

分類Dev

この場合、catchがエラーを返さないのはなぜですか?

分類Dev

-1を返すときにg ++がエラーを返さないのはなぜですか

分類Dev

コードが斜辺の値を返さないのはなぜですか?

分類Dev

このRubyコードが期待される答えを返さないのはなぜですか?

分類Dev

サービスがエンコードされた文字列を返さないのはなぜですか?

分類Dev

コードが正しい値を返さないのはなぜですか?

分類Dev

このコードが正しい結果を返さないのはなぜですか?

分類Dev

コンパイラがこの加算操作でエラーを出さないのはなぜですか?

分類Dev

このコードがエラーを生成するのはなぜですか?

分類Dev

wait()が-1エラーコードを返すのはなぜですか?

分類Dev

OrderModify()がコードエラー130を返すのはなぜですか?

分類Dev

これらのコード行が結果を返さないのはなぜですか?

分類Dev

このコードで「Illegaloffsettype」というエラーが表示されるのはなぜですか?

分類Dev

「myValue = myArray [1.5];」が表示されないのはなぜですか。エラーを返しますか?

分類Dev

axiosを使用した単純なgetリクエストが、コントローラーが返すものを返さないのはなぜですか?

分類Dev

長さの減算がエラーを返すのはなぜですか?

分類Dev

エラーがないのにPythonのロガーがエラーを返すのはなぜですか?

Related 関連記事

  1. 1

    このコードがnull行列を返さないのはなぜですか?

  2. 2

    このコードが文字列を返さないのはなぜですか?

  3. 3

    このコードがfalseを返さないのはなぜですか?

  4. 4

    KafkaKSQLでDESCRIBEEXTENDEDがエラーShowColumnsを返さないのはなぜですか?

  5. 5

    次の解析コードがエラーを返さないのはなぜですか?

  6. 6

    execute()がエラー時にtrueを返さないのはなぜですか?

  7. 7

    なぜこれがエラーを返さないのですか?

  8. 8

    このRubyコードが何も返さないのはなぜですか?

  9. 9

    コピー代入関数が何も返さないのに、コンパイラがエラーを起こさないのはなぜですか?

  10. 10

    このFirebaseFunction Promiseが正しいエラーを返さないのはなぜですか?

  11. 11

    なぜこのコードはNullPointerExceptionを返さないのですか?

  12. 12

    このコードでエラーがスローされないのはなぜですか?

  13. 13

    この場合、catchがエラーを返さないのはなぜですか?

  14. 14

    -1を返すときにg ++がエラーを返さないのはなぜですか

  15. 15

    コードが斜辺の値を返さないのはなぜですか?

  16. 16

    このRubyコードが期待される答えを返さないのはなぜですか?

  17. 17

    サービスがエンコードされた文字列を返さないのはなぜですか?

  18. 18

    コードが正しい値を返さないのはなぜですか?

  19. 19

    このコードが正しい結果を返さないのはなぜですか?

  20. 20

    コンパイラがこの加算操作でエラーを出さないのはなぜですか?

  21. 21

    このコードがエラーを生成するのはなぜですか?

  22. 22

    wait()が-1エラーコードを返すのはなぜですか?

  23. 23

    OrderModify()がコードエラー130を返すのはなぜですか?

  24. 24

    これらのコード行が結果を返さないのはなぜですか?

  25. 25

    このコードで「Illegaloffsettype」というエラーが表示されるのはなぜですか?

  26. 26

    「myValue = myArray [1.5];」が表示されないのはなぜですか。エラーを返しますか?

  27. 27

    axiosを使用した単純なgetリクエストが、コントローラーが返すものを返さないのはなぜですか?

  28. 28

    長さの減算がエラーを返すのはなぜですか?

  29. 29

    エラーがないのにPythonのロガーがエラーを返すのはなぜですか?

ホットタグ

アーカイブ