Maison >développement back-end >Golang >Comprendre les secrets des identifiants d'espaces dans Go

Comprendre les secrets des identifiants d'espaces dans Go

WBOY
WBOYoriginal
2024-04-07 15:54:02532parcourir

L'identifiant d'espace est utilisé dans le langage Go pour placer ou ignorer des variables ou des valeurs, et la syntaxe est _. Il peut être utilisé pour supprimer les variables inutiles, les espaces réservés et les variables avec plusieurs valeurs de retour des fonctions. En pratique, il peut être utilisé pour ignorer les résultats d’analyse indésirables, comme ignorer les erreurs du scanner.

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

Comprenez les secrets des identifiants d'espaces dans le langage Go

Introduction

Les identifiants d'espaces sont un type spécial d'identifiant dans le langage Go qui sont utilisés pour placer ou ignorer des variables ou des valeurs spécifiques. Bien qu’ils puissent sembler discrets, les identifiants d’espaces peuvent être utiles dans certains scénarios.

Syntaxe

Les identifiants d'espaces blancs sont représentés par le mot-clé _. Il ne peut être utilisé que comme variable locale ou nom de paramètre de fonction.

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

Cas d'utilisation

Supprimer les variables inutiles

Lorsque vous devez déclarer une variable mais n'utilisez pas réellement sa valeur, vous pouvez utiliser un identifiant d'espace pour éviter les avertissements du compilateur.

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

Placeholder

Un identifiant vide peut être utilisé pour créer un espace réservé indiquant que la valeur ne sera utilisée que plus tard.

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

Variables pour les fonctions avec plusieurs valeurs de retour

Lorsque la valeur de retour de la fonction est ignorée, vous pouvez utiliser un identifiant vide comme nom de variable.

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

Cas pratique

Ignorer les résultats d'analyse indésirables

Supposons que nous ayons le code suivant, qui scanne les numéros saisis :

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)
    }
}

Dans cet exemple, nous voulons uniquement imprimer les numéros valides sans traiter l'erreur du serveur d'analyse. Nous pouvons utiliser des identifiants d'espaces pour ignorer les erreurs :

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() // 忽略扫描器错误
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn