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

青灯夜游
リリース: 2023-01-10 11:37:11
オリジナル
6548 人が閲覧しました

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

スペースを使用して区切ります。 <div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">$ ./scan_demo  小明 18 false 扫描结果 name:小明 age:18 married:false</pre><div class="contentsignin">ログイン後にコピー</div></div><div class="contentsignin">ログイン後にコピー</div></div>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 は入力データを正しくスキャンできません。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">$ ./scan_demo  小明 18 false 扫描结果 name: age:0 married:false</pre><div class="contentsignin">ログイン後にコピー</div></div>fmt.Scanln

Syntax<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">func Scanln(a ...interface{}) (n int, err error)</pre><div class="contentsignin">ログイン後にコピー</div></div>

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
  • スペースを使用して区切ります。
<div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">$ ./scan_demo  小明 18 false 扫描结果 name:小明 age:18 married:false</pre><div class="contentsignin">ログイン後にコピー</div></div><div class="contentsignin">ログイン後にコピー</div></div>
  • fmt.Scanlnキャリッジ リターンが検出されるとスキャンは終了します。これはより一般的に使用されます。

    推奨学習:

    Golang チュートリアル

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

  • 関連ラベル:
    ソース:php.cn
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    最新の問題
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート
    私たちについて 免責事項 Sitemap
    PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!