Maison > développement back-end > Golang > Explication détaillée de la façon d'utiliser les fonctions Golang

Explication détaillée de la façon d'utiliser les fonctions Golang

PHPz
Libérer: 2023-03-30 09:28:28
original
686 Les gens l'ont consulté

Le langage Go est un nouveau langage de programmation développé par Google. Il est simple, efficace, facile à apprendre, etc., et convient à la programmation simultanée. Dans le langage Go, les fonctions sont un élément de programmation très important. Cet article explique comment utiliser les fonctions Golang.

1. Définition et appel des fonctions

En langage Go, la définition de la fonction est la suivante :

func function_name(parameter_list) (result_list) {
    // 函数代码
}
Copier après la connexion

Parmi elles, function_name est le nom de la fonction parameter_list ; est la liste des paramètres, plusieurs paramètres sont séparés par des virgules ; result_list est une liste de valeurs de retour de fonction, et plusieurs valeurs de retour sont séparées par des virgules à l'intérieur de {} ; le bloc de code pour l’exécution de la fonction. function_name是函数名;parameter_list是参数列表,多个参数之间用逗号分隔;result_list是函数返回值列表,多个返回值之间用逗号分隔;{}内部是函数执行的代码块。

函数调用的语法如下:

function_name(parameter_list)
Copier après la connexion

例如,下面定义了一个简单的函数sum,它接收两个int类型的参数,返回它们的和:

func sum(a int, b int) int {
    return a + b
}
Copier après la connexion

调用sum函数的方式如下:

x := sum(3, 5)
Copier après la connexion

以上代码将会返回值8并赋值给变量x

二、多返回值函数

在Go语言中,函数可以返回多个值。如下面的例子所示,函数more_return返回了两个字符串:

func more_return() (string, string) {
    return "hello", "world"
}
Copier après la connexion

调用方法如下:

a, b := more_return()
Copier après la connexion

以上代码将会返回两个字符串,并赋值给变量ab

三、函数作为参数

在Go语言中,函数也可以作为参数传递给另一个函数。例如,下面的例子演示了一个函数作为参数的例子:

func calc(a int, b int, f func(int, int) int) int {
    return f(a, b)
}

func add(a int, b int) int {
    return a + b
}

func main() {
    result := calc(3, 5, add)
    fmt.Println(result)  // 8
}
Copier après la connexion

在以上代码中,calc函数接收三个参数:ab以及一个函数f,它们的类型分别是intintfunc(int, int) intadd函数是一个用于求两个数相加的函数,它满足func(int, int) int类型的要求。在main函数中,调用calc函数来计算35相加的值,而add函数被作为参数传递给了calc函数。

四、函数的递归调用

在Go语言中,函数也可以递归地调用自身。例如,下面的例子演示了一个递归调用的函数:

func fibonacci(n int) int {
    if n < 2 {
        return n
    }
    return fibonacci(n-1) + fibonacci(n-2)
}
Copier après la connexion

在以上代码中,fibonacci函数接收一个整数n作为参数,它返回斐波那契数列的第n个数的值。当n小于2时,返回值就是n本身;其他情况下,递归调用fibonacci函数。

五、匿名函数

在Go语言中,函数还可以被定义为匿名函数。匿名函数可以像普通函数一样进行传值、调用和返回。下面的例子演示了使用匿名函数进行排序的例子:

package main

import "fmt"

func main() {
    a := []int{5, 2, 6, 3, 1, 4}

    // 使用匿名函数进行排序
    sort.Slice(a, func(i, j int) bool {
        return a[i] < a[j]
    })

    fmt.Println(a)  // [1 2 3 4 5 6]
}
Copier après la connexion

在以上代码中,我们使用了标准库中的sort.Slice函数来对切片进行排序。需要传入一个匿名函数作为参数,匿名函数的参数列表是ij,表示切片的两个元素;返回值类型是bool,表示哪个元素更小。

六、闭包

闭包是一个函数及其引用的外部变量组成的一个整体。在Go语言中,函数可以成为闭包。闭包中的外部变量在闭包中被引用,但生命周期与闭包不同,它们可以在闭包调用结束后继续存在。下面的例子演示了如何使用闭包:

func accumulator() func(int) int {
    sum := 0
    return func(x int) int {
        sum += x
        return sum
    }
}

func main() {
    f := accumulator()
    fmt.Println(f(1))  // 1
    fmt.Println(f(2))  // 3
    fmt.Println(f(3))  // 6
}
Copier après la connexion

在以上代码中,accumulator函数返回一个匿名函数,匿名函数中引用了sum变量。在闭包调用结束后,sum变量仍然存在并继续保存它的值。在main函数中,我们调用了accumulator函数来获得一个闭包函数f,并且通过多次调用f

La syntaxe d'appel de fonction est la suivante :

rrreee

Par exemple, une simple fonction sum est définie ci-dessous, qui reçoit deux paramètres de type int et renvoie leur somme :

rrreee

La façon d'appeler la fonction sum est la suivante : 🎜rrreee🎜Le code ci-dessus renverra la valeur 8 et l'attribuera à la variable x . 🎜🎜2. Fonctions de valeurs de retour multiples🎜🎜Dans le langage Go, les fonctions peuvent renvoyer plusieurs valeurs. Comme le montre l'exemple ci-dessous, la fonction more_return renvoie deux chaînes : 🎜rrreee🎜La méthode d'appel est la suivante : 🎜rrreee🎜Le code ci-dessus renverra deux chaînes et les affectera à la variable a et b. 🎜🎜3. Fonction comme paramètre🎜🎜En langage Go, une fonction peut également être passée en paramètre à une autre fonction. Par exemple, l'exemple suivant montre une fonction comme paramètre : 🎜rrreee🎜 Dans le code ci-dessus, la fonction calc reçoit trois paramètres : a, b et une fonction <code>f, leurs types sont int, int et func(int, int) int code >. La fonction add est une fonction utilisée pour ajouter deux nombres. Elle répond aux exigences du type func(int, int) int. Dans la fonction main, appelez la fonction calc pour calculer la valeur de l'addition de 3 et 5, et La fonction add est passée en paramètre à la fonction calc. 🎜🎜4. Appel récursif de fonctions🎜🎜En langage Go, les fonctions peuvent également s'appeler de manière récursive. Par exemple, l'exemple suivant montre une fonction appelée de manière récursive : 🎜rrreee🎜 Dans le code ci-dessus, la fonction fibonacci reçoit un entier n comme paramètre et renvoie le Fibonacci. valeur du nième numéro de la séquence. Lorsque n est inférieur à 2, la valeur de retour est n lui-même ; dans les autres cas, la fonction fibonacci est appelée de manière récursive ; 🎜🎜5. Fonctions anonymes🎜🎜En langage Go, les fonctions peuvent également être définies comme des fonctions anonymes. Les fonctions anonymes peuvent transmettre des valeurs, appeler et renvoyer comme des fonctions ordinaires. L'exemple suivant démontre l'utilisation de fonctions anonymes pour le tri : 🎜rrreee🎜 Dans le code ci-dessus, nous utilisons la fonction sort.Slice de la bibliothèque standard pour trier les tranches. Une fonction anonyme doit être passée en paramètre. La liste des paramètres de la fonction anonyme est i et j, qui représentent les deux éléments de la tranche ; le type est bool code>, indiquant quel élément est le plus petit. 🎜🎜 6. Fermeture 🎜🎜Une fermeture est un tout composé d'une fonction et des variables externes qu'elle référence. En langage Go, les fonctions peuvent devenir des fermetures. Les variables externes dans une fermeture sont référencées dans la fermeture, mais ont une durée de vie différente de celle d'une fermeture, et elles peuvent survivre après la fin de l'appel de fermeture. L'exemple suivant montre comment utiliser les fermetures : 🎜rrreee🎜Dans le code ci-dessus, la fonction <code>accumulator renvoie une fonction anonyme et la variable sum est référencée dans la fonction anonyme. Une fois l'appel de fermeture terminé, la variable sum existe toujours et continue de conserver sa valeur. Dans la fonction main, nous appelons la fonction accumulateur pour obtenir une fonction de fermeture f, et appelons fplusieurs fois code > fonction pour calculer la somme cumulée. 🎜🎜7. Résumé🎜🎜Les fonctions du langage Go sont un élément de programmation très important. Elles sont simples, efficaces, faciles à apprendre, etc., et prennent en charge des fonctions telles que des paramètres, des valeurs de retour multiples, des appels récursifs, des fonctions anonymes, des fermetures, etc. . De nombreuses fonctionnalités. Maîtriser l'utilisation de ces fonctionnalités peut nous aider à mieux mener à bien le travail de développement du langage 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!

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