Maison > développement back-end > Golang > Utiliser des assertions de type pour gérer différents types d'erreurs dans les fonctions Golang

Utiliser des assertions de type pour gérer différents types d'erreurs dans les fonctions Golang

WBOY
Libérer: 2024-04-24 12:09:01
original
1092 Les gens l'ont consulté

Lors de la gestion de différents types d'erreurs dans les fonctions Go, vous pouvez utiliser des assertions de type pour vérifier le type réel d'une variable et la convertir au type requis. La syntaxe de l'assertion de type est : variable, ok := interfaceVariable.(type), où variable est la variable d'interface à vérifier, type est le type cible vers lequel convertir et ok est une valeur booléenne indiquant si la conversion est réussie. . Les assertions de type permettent d'exécuter différents chemins de code en fonction de différents types d'erreurs.

Utiliser des assertions de type pour gérer différents types derreurs dans les fonctions Golang

Utilisez des assertions de type pour gérer différents types d'erreurs dans les fonctions Go

Lors de la gestion de différents types d'erreurs dans les fonctions Go, vous pouvez utiliser des assertions de type. L'assertion de type est un mécanisme de vérification de type qui vous permet de vérifier le type réel d'une variable et de la convertir en type requis. Ceci est utile lorsque différents chemins de code doivent être exécutés en fonction de différents types d'erreurs.

Syntaxe

La syntaxe de l'assertion de type est la suivante :

variable, ok := interfaceVariable.(type)
Copier après la connexion
  • variable est la variable d'interface à vérifier.
  • variable 是要检查的 interface 变量。
  • type 是要转换到的目标类型。
  • ok 是一个布尔值,表示转换是否成功。如果转换失败,ok 将为 false

实战案例

考虑以下函数:

func doSomething() error {
  if err := someDependency.DoSomething(); err != nil {
    return err
  }

  return nil
}
Copier après la connexion

此函数调用 someDependency.DoSomething() 方法,该方法可能会返回不同类型的错误。为了根据错误类型执行不同的操作,我们可以使用类型断言:

func main() {
  if err := doSomething(); err != nil {
    switch err := err.(type) {
    case *myError1:
      // 执行错误1的处理代码
    case *myError2:
      // 执行错误2的处理代码
    default:
      // 执行默认的错误处理代码
    }
  }
}
Copier après la connexion

在这个例子中,我们根据 err 的实际类型执行不同的代码路径。如果 err*myError1 类型,则执行错误 1 的处理代码。如果 err*myError2 类型,则执行错误 2 的处理代码。如果 errtype est le type de cible vers lequel convertir.

ok est une valeur booléenne indiquant si la conversion a réussi. Si la conversion échoue, ok sera false. 🎜🎜Cas pratique🎜🎜🎜Considérons la fonction suivante : 🎜rrreee🎜Cette fonction appelle la méthode someDependency.DoSomething(), qui peut renvoyer différents types d'erreurs. Afin d'effectuer différentes actions en fonction du type d'erreur, nous pouvons utiliser des assertions de type : 🎜rrreee🎜 Dans cet exemple, nous effectuons différents chemins de code en fonction du type réel de err. Si err est de type *myError1, alors le code de gestion de l'erreur 1 est exécuté. Si err est de type *myError2, alors le code de gestion de l'erreur 2 est exécuté. Si err n'est pas l'un de ces deux types, le code de gestion des erreurs par défaut est exécuté. 🎜

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal