Maison > développement back-end > Golang > le corps du texte

Quelle est la méthode d'appel des fonctions en langage Go ?

青灯夜游
Libérer: 2022-12-01 19:32:00
original
6799 Les gens l'ont consulté

Dans le langage Go, après avoir défini une fonction, on peut appeler la fonction via "nom de fonction ()", la syntaxe est "liste de variables de valeur de retour = nom de fonction (liste de paramètres)". Lorsque "()" contient plusieurs paramètres, les variables de paramètres sont séparées par des virgules et n'ont pas besoin de se terminer par un point-virgule ; dans la "liste des variables de valeur de retour", plusieurs valeurs de retour sont séparées par des virgules.

Quelle est la méthode d'appel des fonctions en langage Go ?

L'environnement d'exploitation de ce tutoriel : système Windows 7, GO version 1.18, ordinateur Dell G3.

La fonction constitue la structure logique de l'exécution du code. Dans le langage Go, les composants de base de la fonction sont : le mot-clé func, le nom de la fonction, la liste des paramètres, la valeur de retour, le corps de la fonction et l'instruction de retour. Chaque programme contient de nombreuses fonctions. de code.

Le langage Go étant un langage compilé, l'ordre dans lequel les fonctions sont écrites n'a pas d'importance. Compte tenu des exigences de lisibilité, il est préférable d'écrire la fonction main() au début du fichier et les autres fonctions doivent être écrites dedans. un certain ordre logique (comme l'ordre dans lequel les fonctions sont appelées).

L'objectif principal de l'écriture de plusieurs fonctions est de décomposer un problème complexe qui nécessite de nombreuses lignes de code en une série de tâches simples à résoudre. De plus, la même tâche (fonction) peut être appelée plusieurs fois, ce qui facilite la réutilisation du code (fait). Surtout, les bons programmes accordent une grande attention au principe DRY, c'est-à-dire Don't Repeat Yourself (Don't Repeat Yourself), ce qui signifie que le code qui exécute une tâche spécifique ne peut apparaître qu'une seule fois dans le programme).

La fonction se terminera lorsqu'elle atteindra la dernière ligne du bloc de code } ou avant l'instruction return. L'instruction return peut avoir zéro ou plusieurs paramètres. Ces paramètres seront utilisés comme valeurs de retour pour l'appelant. L'instruction peut également être utilisée pour terminer la boucle infinie de for ou mettre fin à une goroutine.

Il existe trois types de fonctions dans le langage Go :

  • Fonctions ordinaires avec des noms
  • Fonctions anonymes ou fonctions lambda
  • Méthodes

Déclaration de fonction ordinaire (définition)

La déclaration de fonction inclut le nom de la fonction, formel liste de paramètres, liste de valeurs de retour (peut être omise) et corps de fonction.

func 函数名(形式参数列表)(返回值列表){
    函数体
}
Copier après la connexion

La liste formelle des paramètres décrit le nom du paramètre et le type de paramètre de la fonction. Ces paramètres sont utilisés comme variables locales et leurs valeurs sont fournies par l'appelant du paramètre. La liste des valeurs de retour décrit le nom de la variable et le type de la fonction. valeur de retour de la fonction. Si la fonction renvoie une variable sans nom ou s'il n'y a pas de valeur de retour et que les parenthèses dans la liste des valeurs de retour peuvent être omises.

Fonction d'appel

Une fois la fonction définie, le code actuel peut accéder à la fonction appelée pour exécution en l'appelant. Les variables locales de la fonction avant l'appel seront enregistrées et ne seront pas perdues après la fonction. est terminé, l'exécution du code reprend sur la ligne suivante de la fonction appelante et les variables locales précédentes peuvent également continuer à être accessibles.

Les variables locales au sein d'une fonction ne peuvent être utilisées que dans le corps de la fonction. Une fois l'appel de la fonction terminé, ces variables locales seront libérées et invalides.

Le format d'appel de fonction du langage Go est le suivant :

返回值变量列表 := 函数名(参数列表)
Copier après la connexion

Ce qui suit est une description de chaque partie :

  • Nom de la fonction : le nom de la fonction qui doit être appelée.
  • Liste des paramètres : les variables de paramètres sont séparées par des virgules et n'ont pas besoin de se terminer par un point-virgule.
  • Liste des variables de valeur de retour : plusieurs valeurs de retour sont séparées par des virgules.

Par exemple, le style d'appel de la fonction d'addition est le suivant :

result := add(1,1)
Copier après la connexion

La valeur de retour de la fonction

Le langage Go prend en charge plusieurs valeurs de retour. Plusieurs valeurs de retour peuvent facilement obtenir plusieurs paramètres de retour après l'exécution de la fonction. Le langage Go utilise souvent plusieurs Le dernier paramètre de retour dans la valeur de retour renvoie les erreurs qui peuvent survenir lors de l'exécution de la fonction. L'exemple de code est le suivant :

conn, err := connectToNetwork()
Copier après la connexion
Copier après la connexion
.

在这段代码中,connectToNetwork 返回两个参数,conn 表示连接对象,err 返回错误信息。

其它编程语言中函数的返回值

  • C/C++ 语言中只支持一个返回值,在需要返回多个数值时,则需要使用结构体返回结果,或者在参数中使用指针变量,然后在函数内部修改外部传入的变量值,实现返回计算结果,C++ 语言中为了安全性,建议在参数返回数据时使用“引用”替代指针。
  • C# 语言也没有多返回值特性,C# 语言后期加入的 ref 和 out 关键字能够通过函数的调用参数获得函数体中修改的数据。
  • lua 语言没有指针,但支持多返回值,在大块数据使用时方便很多。

Go语言既支持安全指针,也支持多返回值,因此在使用函数进行逻辑编写时更为方便。

1) 同一种类型返回值

如果返回值是同一种类型,则用括号将多个返回值类型括起来,用逗号分隔每个返回值的类型。

使用 return 语句返回时,值列表的顺序需要与函数声明的返回值类型一致,示例代码如下:

func typedTwoValues() (int, int) {
    return 1, 2
}
func main() {
    a, b := typedTwoValues()
    fmt.Println(a, b)
}
Copier après la connexion
Copier après la connexion

代码输出结果:

1 2
Copier après la connexion

纯类型的返回值对于代码可读性不是很友好,特别是在同类型的返回值出现时,无法区分每个返回参数的意义。

2) 带有变量名的返回值

Go语言支持对返回值进行命名,这样返回值就和参数一样拥有参数变量名和类型。

命名的返回值变量的默认值为类型的默认值,即数值为 0,字符串为空字符串,布尔为 false、指针为 nil 等。

下面代码中的函数拥有两个整型返回值,函数声明时将返回值命名为 a 和 b,因此可以在函数体中直接对函数返回值进行赋值,在命名的返回值方式的函数体中,在函数结束前需要显式地使用 return 语句进行返回,代码如下:

func namedRetValues() (a, b int) {
    a = 1
    b = 2
    return
}
Copier après la connexion
Copier après la connexion

代码说明如下:

  • 第 1 行,对两个整型返回值进行命名,分别为 a 和 b。
  • 第 3 行和第 4 行,命名返回值的变量与这个函数的布局变量的效果一致,可以对返回值进行赋值和值获取。
  • 第 6 行,当函数使用命名返回值时,可以在 return 中不填写返回值列表,如果填写也是可行的,下面代码的执行效果和上面代码的效果一样。
    func namedRetValues() (a, b int) {
        a = 1
        return a, 2
    }
    Copier après la connexion
    Copier après la connexion

提示

同一种类型返回值和命名返回值两种形式只能二选一,混用时将会发生编译错误,例如下面的代码:

func namedRetValues() (a, b int, int)
Copier après la connexion
Copier après la connexion

编译报错提示:

mixed named and unnamed function parameters
Copier après la connexion

意思是:在函数参数中混合使用了命名和非命名参数。

【相关推荐:Go视频教程

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