空白識別子は、Go 言語で変数または値を配置または無視するために使用され、構文は _ です。不要な変数、プレースホルダー、関数からの戻り値が複数ある変数を破棄するために使用できます。実際には、スキャナ エラーを無視するなど、不要なスキャン結果をスキップするために使用できます。
空白識別子は、Go 言語シンボルの特別なタイプの識別子です。特定の変数または値を配置または無視するために使用されます。目立たないように見えるかもしれませんが、空白識別子は特定のシナリオで役立つ場合があります。
空白識別子は、キーワード __
で表されます。ローカル変数または関数のパラメーター名としてのみ使用できます。
func foo(_ int) {} func main() { var _ = 10 }
変数を宣言する必要があるが、実際にはその値を使用しない場合、空の識別子を使用してコンパイルを回避できます。デバイスの警告。
func foo(x int) { if x > 10 { _ = fmt.Println("x is greater than 10") } }
空白の識別子を使用してプレースホルダーを作成でき、値が後で使用されないことを示します。
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 サイトの他の関連記事を参照してください。