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

Utilisation courante des fonctions Golang

PHPz
Libérer: 2023-04-25 15:46:31
original
600 Les gens l'ont consulté

Go est un nouveau langage de programmation efficace et simple à utiliser. Son utilisation des fonctions est également très flexible. Cet article présentera en détail l'utilisation courante et les précautions des fonctions Golang.

1. Déclaration de fonction

Lors de la déclaration d'une fonction en langage Go, vous devez spécifier le nom de la fonction, les paramètres et la valeur de retour. Le format de base de la fonction est le suivant :

func 函数名 (参数1, 参数2, ...) (返回值1, 返回值2, ...) {
    // 函数体
}
Copier après la connexion

Parmi eux, le nom de la fonction suit la convention de dénomination des identifiants. Les paramètres de fonction peuvent être de n’importe quel type ou n’avoir aucun paramètre. La valeur de retour peut être de n’importe quel type ou il ne peut y avoir aucune valeur de retour.

Par exemple, ce qui suit est une déclaration de fonction simple :

func add(x int, y int) int {
    return x + y
}
Copier après la connexion

Dans cette fonction, nous déclarons une fonction nommée add, qui a deux paramètres de type entier x et <code>y, la valeur de retour est leur somme. add的函数,它有两个整数类型的参数xy,返回值为它们的和。

二、多返回值函数

Go语言支持多返回值函数。例如:

func divmod(a, b int) (int, int) {
    return a / b, a % b
}
Copier après la connexion

在这个函数中,我们声明了两个整数类型参数ab,同时返回两个整数类型的值,这两个值分别是除法和模运算的结果。

三、函数作为参数

在Go语言中,函数可以作为参数传递给其他函数。例如:

func apply(nums []int, f func(int) int) []int {
    result := []int{}
    for _, v := range nums {
        result = append(result, f(v))
    }
    return result
}
Copier après la connexion

在这个函数中,我们声明了一个名为apply的函数,它有两个参数,一个是整数类型的切片nums,另一个是一个函数f,这个函数以一个整型参数作为输入,并返回一个整型结果。函数apply将切片nums中的每个元素传递给函数f,并将每个函数执行的结果存储在一个新的切片中返回。

例如:

func square(x int) int {
    return x * x
}

result := apply([]int{1, 2, 3, 4}, square) // [1, 4, 9, 16]
Copier après la connexion

在这个例子中,我们定义了一个函数square,它将一个整数平方,并使用apply函数将切片{1, 2, 3, 4}中的每个整数应用到函数square中,最终得到一个新的切片[1, 4, 9, 16]作为结果。

四、在函数中嵌套函数

在Go语言中,函数可以在其他函数中声明和定义。例如:

func outer(x, y int) int {
    square := func(x int) int {
        return x * x
    }

    return square(x) + square(y)
}
Copier après la connexion

在这个函数中,我们定义了一个名为outer的函数,它有两个整数类型的参数xy。函数outer声明并定义了一个匿名函数square,它将一个整数平方。然后,函数outer将参数xy都传递给函数square,并将结果相加返回。

五、函数作为返回值

在Go语言中,函数可以作为返回值。例如:

func adder() func(int) int {
    sum := 0
    return func(x int) int {
        sum += x
        return sum
    }
}
Copier après la connexion

在这个函数中,我们定义了一个名为adder的函数,它不接受任何参数,并返回一个函数。返回的函数也接受一个整数类型的参数,并返回一个整数类型的结果。在函数adder的内部,我们定义了一个整数类型的变量sum,并返回了一个匿名函数,它将参数x加到sum上,并返回sum的新值。

例如:

add := adder() // 返回一个函数
fmt.Println(add(1)) // 输出 1
fmt.Println(add(2)) // 输出 3
fmt.Println(add(3)) // 输出 6
Copier après la connexion

在这个例子中,我们首先调用adder()函数来获得一个新的函数add,然后使用add函数三次,每次传递一个整数类型的值,最终得到1+2+3=6

六、defer语句

在Go语言中,我们可以使用defer语句在函数执行完成后执行一些清理工作。例如:

func f() {
    defer fmt.Println("Done.")
    fmt.Println("Working.")
}

f() // 输出 "Working." 和 "Done."
Copier après la connexion

在这个例子中,我们定义了一个名为f的函数,它包含两个语句。第一个语句打印"Working.",第二个语句使用defer关键字打印"Done."。由于defer关键字的存在,第二个语句将在函数执行完成后输出。

另外,defer

2. Plusieurs fonctions de valeur de retour

Le langage Go prend en charge plusieurs fonctions de valeur de retour. Par exemple :

rrreee

Dans cette fonction, nous déclarons deux paramètres de type entier a et b, et renvoyons respectivement deux valeurs de type entier qui sont le résultat de la division et. opérations modulo. 🎜🎜3. Fonctions comme paramètres🎜🎜En langage Go, les fonctions peuvent être transmises comme paramètres à d'autres fonctions. Par exemple : 🎜rrreee🎜Dans cette fonction, nous déclarons une fonction nommée apply, qui a deux paramètres, l'un est une tranche de type entier nums et l'autre est un fonction f qui prend un paramètre entier en entrée et renvoie un résultat entier. La fonction apply transmet chaque élément de la tranche nums à la fonction f et stocke le résultat de chaque exécution de fonction dans un nouveau retour de tranche. 🎜🎜Par exemple : 🎜rrreee🎜Dans cet exemple, nous définissons une fonction square qui met au carré un entier et le découpe à l'aide de la fonction apply {1 , 2, 3, 4} Chaque entier est appliqué à la fonction carré, et finalement une nouvelle tranche [1, 4, 9, 16] est obtenue >sous forme de résultat. 🎜🎜4. Imbriquer des fonctions dans des fonctions🎜🎜En langage Go, les fonctions peuvent être déclarées et définies dans d'autres fonctions. Par exemple : 🎜rrreee🎜Dans cette fonction, nous définissons une fonction nommée outer, qui a deux paramètres de type entier x et y. La fonction outer déclare et définit une fonction anonyme square qui met au carré un entier. Ensuite, la fonction outer transmet les paramètres x et y à la fonction square et ajoute les résultats . 🎜🎜5. Fonction comme valeur de retour🎜🎜En langage Go, les fonctions peuvent être utilisées comme valeurs de retour. Par exemple : 🎜rrreee🎜Dans cette fonction, nous définissons une fonction appelée adder, qui n'accepte aucun paramètre et renvoie une fonction. La fonction renvoyée accepte également un argument de type entier et renvoie un résultat de type entier. Dans la fonction adder, nous définissons une variable de type entier sum et renvoyons une fonction anonyme qui ajoute le paramètre x à sum code>, et renvoie la nouvelle valeur de <code>somme. 🎜🎜Par exemple : 🎜rrreee🎜Dans cet exemple, nous appelons d'abord la fonction adder() pour obtenir une nouvelle fonction add, puis utilisons add code >La fonction est passée trois fois, en passant à chaque fois une valeur de type entier, et obtient finalement <code>1+2+3=6. 🎜🎜6. Instruction Defer🎜🎜Dans le langage Go, nous pouvons utiliser l'instruction defer pour effectuer un travail de nettoyage une fois l'exécution de la fonction terminée. Par exemple : 🎜rrreee🎜Dans cet exemple, nous définissons une fonction nommée f, qui contient deux instructions. La première instruction affiche « Working » et la deuxième instruction affiche « Terminé » en utilisant le mot-clé defer. En raison de la présence du mot-clé defer, la deuxième instruction sera affichée une fois l'exécution de la fonction terminée. 🎜🎜De plus, l'instruction defer a des utilisations plus avancées, telles que son utilisation dans les opérations de lecture et d'écriture de fichiers, ce qui peut garantir que le descripteur de fichier est correctement fermé à la fin de l'exécution de la fonction. 🎜🎜Résumé🎜🎜Cet article présente l'utilisation courante et les précautions des fonctions Golang, y compris la déclaration de fonction, les fonctions à valeurs de retour multiples, les fonctions en tant que paramètres, les fonctions imbriquées dans les fonctions, les fonctions en tant que valeurs de retour et les instructions différées. Grâce à ces conseils, vous pouvez écrire des programmes Go plus concis, élégants et efficaces. 🎜

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!