ホームページ >バックエンド開発 >Golang >Go の空白識別子の秘密を理解する

Go の空白識別子の秘密を理解する

WBOY
WBOYオリジナル
2024-04-07 15:54:02505ブラウズ

空白識別子は、Go 言語で変数または値を配置または無視するために使用され、構文は _ です。不要な変数、プレースホルダー、関数からの戻り値が複数ある変数を破棄するために使用できます。実際には、スキャナ エラーを無視するなど、不要なスキャン結果をスキップするために使用できます。

理解 Go 语言中空白标识符的奥妙

Go 言語の空白識別子の謎を理解する

はじめに

空白識別子は、Go 言語シンボルの特別なタイプの識別子です。特定の変数または値を配置または無視するために使用されます。目立たないように見えるかもしれませんが、空白識別子は特定のシナリオで役立つ場合があります。

構文

空白識別子は、キーワード __ で表されます。ローカル変数または関数のパラメーター名としてのみ使用できます。

func foo(_ int) {}
func main() {
    var _ = 10
}

ユースケース

不要な変数を破棄する

変数を宣言する必要があるが、実際にはその値を使用しない場合、空の識別子を使用してコンパイルを回避できます。デバイスの警告。

func foo(x int) {
    if x > 10 {
        _ = fmt.Println("x is greater than 10")
    }
}

Placeholder

空白の識別子を使用してプレースホルダーを作成でき、値が後で使用されないことを示します。

func foo() (int, int) {
    // 假设 a 和 b 的值稍后会计算出来
    return _, _
}

複数の戻り値を持つ関数の変数

関数の戻り値が無視される場合、空白の識別子をその変数名として使用できます。

func foo() (int, error) {
    x, _ := bar()
    return x, nil // 忽略错误
}

実用的なケース

不要なスキャン結果をスキップする

入力された番号をスキャンする次のコードがあるとします。

package main

import (
    "fmt"
    "strings"
)

func main() {
    scanner := bufio.NewScanner(os.Stdin)
    for scanner.Scan() {
        line := scanner.Text()
        if num, err := strconv.Atoi(line); err == nil {
            fmt.Printf("有效数字:%d\n", num)
        }
    }

    if err := scanner.Err(); err != nil {
        fmt.Println("读取输入时出错:", err)
    }
}

この例では、スキャナエラーに対処せずに、有効な数値のみを印刷したいのです。空の識別子を使用してエラーを無視できます:

package main

import (
    "bufio"
    "fmt"
    "os"
    "strconv"
)

func main() {
    scanner := bufio.NewScanner(os.Stdin)
    for scanner.Scan() {
        line := scanner.Text()
        if num, _ := strconv.Atoi(line); err == nil {
            fmt.Printf("有效数字:%d\n", num)
        }
    }
    _ = scanner.Err() // 忽略扫描器错误
}

以上がGo の空白識別子の秘密を理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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