Maison  >  Article  >  développement back-end  >  Explorez les principes en coulisses de l'inférence de type de fonction Golang

Explorez les principes en coulisses de l'inférence de type de fonction Golang

WBOY
WBOYoriginal
2024-04-20 09:57:02588parcourir

La déduction de type de fonction permet d'omettre les paramètres et les types de valeurs de retour des fonctions Go, et le compilateur déduit le type en fonction du corps de la fonction. 1. Utilisation : omettez la déclaration de type, telle que func sum(x, y int) int { return x + y }. 2. En coulisses : le compilateur déduit que le type de valeur de retour est le type de l'expression dans la fonction et que le type de paramètre est le type de paramètre de l'appel de fonction.

探索 Golang 函数类型推导的幕后原理

Explorez les principes en coulisses de la déduction de type de fonction Go

La déduction de type de fonction est une fonctionnalité puissante du langage Go, qui nous permet d'omettre le type de paramètre et le type de valeur de retour d'une fonction. Le compilateur déduit ces types du corps de la fonction au moment de la compilation. Comment utiliser l'inférence de type de fonction comme cette fonction, elle déduit le type en fonction du corps de la fonction. Tout d'abord, il trouvera la première instruction return de la fonction :

func sum(x, y int) int {
    return x + y
}

Le type d'expression x + y dans cette instruction est int. Par conséquent, le compilateur déduit que le type de valeur de retour de la fonction sum est int. Ensuite, le compilateur vérifie les types de paramètres dans l'appel de fonction. Dans cet exemple, la fonction sum est appelée comme suit :

return x + y

La fonction fmt.Println attend une valeur de type int en paramètre . Par conséquent, le compilateur déduit que le type de paramètre de la fonction sum est également de type int.

Cas pratique

Écrivons un programme simple pour calculer la moyenne de deux nombres en utilisant la déduction de type :

fmt.Println(sum(1, 2))

Dans ce programme, les types de paramètres et les valeurs de retour de la moyenne fonction Les types ne sont pas spécifiés. Le compilateur déduit ces types du corps de la fonction comme int et float64. x + y 表达式类型为 int。因此,编译器会推断出 sum 函数的返回值类型为 int

接下来,编译器会检查函数调用中的参数类型。在本例中,sum 函数被调用如下:

package main

import "fmt"

func average(x, y int) float64 {
    return float64(x+y) / 2
}

func main() {
    fmt.Println(average(10, 20))
}

fmt.Println 函数期望一个 int 类型的值作为参数。因此,编译器会推断出 sum 函数的参数类型也为 int

实战案例

让我们使用类型推导编写一个简单的程序来计算两个数的平均值:

rrreee

在这个程序中,average 函数的参数类型和返回值类型都没有指定。编译器会根据函数体推断出这些类型为 intfloat64

Conclusion

L'inférence de type de fonction rend l'écriture du code Go facile et rapide. Il permet aux programmeurs de se concentrer sur la logique des fonctions sans se soucier des déclarations de type. En comprenant ce qui se passe en coulisses, nous pouvons mieux tirer parti de cette fonctionnalité.

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