ホームページ >バックエンド開発 >Golang >Go 言語での scan メソッドの用途は何ですか?

Go 言語での scan メソッドの用途は何ですか?

青灯夜游
青灯夜游オリジナル
2021-03-15 16:46:586592ブラウズ

Go 言語では、標準入力「os.Stdin」からテキストを読み取る、つまりターミナルからデータを取得するために、Scan() メソッドが使用されます。このメソッドは、正常に読み取られたデータの数と発生したエラーを返します。読み取られたデータの数が指定されたパラメータよりも少ない場合は、エラー レポートの理由が返されます。

Go 言語での scan メソッドの用途は何ですか?

このチュートリアルの動作環境: Windows 7 システム、GO バージョン 1.18、Dell G3 コンピューター。

Scan シリーズ

Go 言語fmt パッケージには fmt.Scan、## が含まれています3 つの関数 #fmt.Scanffmt.Scanln は、プログラムの実行中に標準入力からユーザー入力を取得できます。

fmt.Scan

Syntax

func Scan(a ...interface{}) (n int, err error)

    Scan は標準入力からテキストをスキャンし、空白で区切られた値を読み取り、渡すために保存します。この関数に与えられる引数では、改行文字は空白文字として扱われます。
  • この関数は、正常にスキャンされたデータの数と、発生したエラーを返します。読み取られたデータの数が指定されたパラメーターよりも少ない場合は、エラー レポートの理由が返されます。
コード例

func main() {
    var (
        name    string
        age     int
        married bool
    )
    fmt.Scan(&name, &age, &married)
    fmt.Printf("扫描结果 name:%s age:%d married:%t \n", name, age, married)
}

上記のコードをコンパイルし、ターミナルで実行します。 #false

スペースを使用して区切ります。 <pre class="brush:php;toolbar:false">$ ./scan_demo  小明 18 false 扫描结果 name:小明 age:18 married:false</pre>fmt.Scanユーザーが標準入力から入力したデータをスキャンし、空白文字で区切られたデータを指定されたパラメーターに保存します。

fmt.Scanf

Syntax

func Scanf(format string, a ...interface{}) (n int, err error)

Scanf は、標準入力からテキストをスキャンし、format パラメーターで指定された形式に従って空白を読み取ります。文字で区切られた値は、この関数に渡されるパラメータに格納されます。

この関数は、正常にスキャンされたデータの数と、発生したエラーを返します。

    コード例
  • func main() {
        var (
            name    string
            age     int
            married bool
        )
        fmt.Scanf("1:%s 2:%d 3:%t", &name, &age, &married)
        fmt.Printf("扫描结果 name:%s age:%d married:%t \n", name, age, married)
    }
  • 上記のコードをコンパイルし、ターミナルで実行します。に従って、ターミナルに Xiaoming、
  • 18
false と入力します。指定されたフォーマットです。

$ ./scan_demo 
1:小明 2:18 3:false
扫描结果 name:小明 age:18 married:false

fmt.Scanf入力データの区切り文字としてスペースを単純に使用する fmt.Scanf とは異なります。入力データには特定の入力内容フォーマットが指定されており、そのフォーマットに従って入力されたデータのみがスキャンされ、対応する変数に格納されます。

たとえば、前の例のようにスペース区切り形式でデータを入力した場合、fmt.Scanf は入力データを正しくスキャンできません。 <pre class="brush:php;toolbar:false">$ ./scan_demo  小明 18 false 扫描结果 name: age:0 married:false</pre>fmt.Scanln

Syntax<pre class="brush:php;toolbar:false">func Scanln(a ...interface{}) (n int, err error)</pre>

Scanln は Scan に似ていますが、改行に遭遇した場合にのみスキャンを停止します。最後のデータの後に改行が必要か、終了位置に到達する必要があります。

この関数は、正常にスキャンされたデータの数と、発生したエラーを返します。

コード例

func main() {
    var (
        name    string
        age     int
        married bool
    )
    fmt.Scanln(&name, &age, &married)
    fmt.Printf("扫描结果 name:%s age:%d married:%t \n", name, age, married)
}
    上記のコードをコンパイルし、ターミナルで実行します。 #false
  • スペースを使用して区切ります。
<pre class="brush:php;toolbar:false">$ ./scan_demo  小明 18 false 扫描结果 name:小明 age:18 married:false</pre>
  • fmt.Scanlnキャリッジ リターンが検出されるとスキャンは終了します。これはより一般的に使用されます。

    推奨学習:

    Golang チュートリアル

    以上がGo 言語での scan メソッドの用途は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

  • 声明:
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。