Maison >développement back-end >Golang >Résoudre l'erreur Golang : opération non valide : type non numérique « x », stratégie de solution

Résoudre l'erreur Golang : opération non valide : type non numérique « x », stratégie de solution

王林
王林original
2023-08-19 12:15:241251parcourir

解决golang报错:invalid operation: non-numeric type 'x',解决策略

Résoudre l'erreur Golang : opération invalide : type non numérique 'x', stratégie de solution

Lors de la programmation avec Golang, nous rencontrons parfois quelque chose comme "Opération invalide : type non numérique 'x'". Cette erreur se produit généralement lors de l'exécution d'opérations numériques sur des types non numériques, telles que l'ajout de chaînes à des nombres ou l'exécution d'opérations de comparaison. Cet article décrit des stratégies pour résoudre ce problème, ainsi que quelques exemples de code.

Ce problème se pose parce que le système de types de Golang est très strict, ce qui exige que les types correspondent lorsque nous effectuons des opérations. Lorsque nous effectuons des opérations numériques sur des types non numériques, le compilateur signalera une erreur.

Afin de résoudre ce problème, nous pouvons utiliser deux méthodes : l'assertion de type et la conversion de type.

  1. Assertion de type

L'assertion de type peut convertir un type d'interface en d'autres types concrets. Nous pouvons utiliser des assertions de type pour déterminer le type réel d'une variable et la gérer en conséquence. Voici un exemple de code :

package main

import (
    "fmt"
)

func main() {
    var x interface{} = "Hello, World!"

    // 使用类型断言判断变量的类型
    str, ok := x.(string)
    if ok {
        fmt.Println(str + " is a string.")
    } else {
        fmt.Println("x is not a string.")
    }

    // 对非数值类型进行数值操作
    // 这里将会报错:"invalid operation: non-numeric type string"
    sum := str + 10
    fmt.Println(sum)
}

Dans le code ci-dessus, nous utilisons d'abord l'assertion de type pour déterminer le type de variable x et la convertir en type chaîne. Ensuite, nous essayons d'effectuer des opérations numériques sur ce type de chaîne, donc une erreur se produit.

  1. Conversion de type

La conversion de type peut convertir un type de données en un autre type de données. Nous pouvons résoudre cette erreur en utilisant la conversion de type pour convertir les types non numériques en types numériques. Voici un exemple de code :

package main

import (
    "fmt"
)

func main() {
    var x interface{} = "10"

    // 使用类型转换将字符串转换为整数
    num, err := strconv.Atoi(x.(string))
    if err == nil {
        fmt.Println(num)
    } else {
        fmt.Println("Conversion error.")
    }

    // 操作数都是数值类型,无报错
    sum := num + 10
    fmt.Println(sum)
}

Dans le code ci-dessus, nous convertissons d'abord la variable de type d'interface x en type chaîne à l'aide de l'assertion de type, puis nous la convertissons en type entier à l'aide de la fonction strconv.Atoi(). De cette façon, nous pouvons effectuer des opérations numériques sur ce type entier.

Vous trouverez ci-dessus deux stratégies courantes pour résoudre l'erreur « opération invalide : type non numérique 'x' ». Lorsque nous rencontrons des erreurs similaires dans Golang, nous pouvons utiliser l'assertion de type ou la conversion de type pour les résoudre. J'espère que cet article sera utile à tout le monde !

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