Maison  >  Article  >  développement back-end  >  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
WBOYoriginal
2024-04-24 12:09:011017parcourir

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

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

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

在这个例子中,我们根据 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!

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