Maison >développement back-end >Golang >Utilisation courante des fonctions Golang
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, ...) { // 函数体 }
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 }
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
的函数,它有两个整数类型的参数x
和y
,返回值为它们的和。
二、多返回值函数
Go语言支持多返回值函数。例如:
func divmod(a, b int) (int, int) { return a / b, a % b }
在这个函数中,我们声明了两个整数类型参数a
和b
,同时返回两个整数类型的值,这两个值分别是除法和模运算的结果。
三、函数作为参数
在Go语言中,函数可以作为参数传递给其他函数。例如:
func apply(nums []int, f func(int) int) []int { result := []int{} for _, v := range nums { result = append(result, f(v)) } return result }
在这个函数中,我们声明了一个名为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]
在这个例子中,我们定义了一个函数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) }
在这个函数中,我们定义了一个名为outer
的函数,它有两个整数类型的参数x
和y
。函数outer
声明并定义了一个匿名函数square
,它将一个整数平方。然后,函数outer
将参数x
和y
都传递给函数square
,并将结果相加返回。
五、函数作为返回值
在Go语言中,函数可以作为返回值。例如:
func adder() func(int) int { sum := 0 return func(x int) int { sum += x return sum } }
在这个函数中,我们定义了一个名为adder
的函数,它不接受任何参数,并返回一个函数。返回的函数也接受一个整数类型的参数,并返回一个整数类型的结果。在函数adder
的内部,我们定义了一个整数类型的变量sum
,并返回了一个匿名函数,它将参数x
加到sum
上,并返回sum
的新值。
例如:
add := adder() // 返回一个函数 fmt.Println(add(1)) // 输出 1 fmt.Println(add(2)) // 输出 3 fmt.Println(add(3)) // 输出 6
在这个例子中,我们首先调用adder()
函数来获得一个新的函数add
,然后使用add
函数三次,每次传递一个整数类型的值,最终得到1+2+3=6
。
六、defer语句
在Go语言中,我们可以使用defer
语句在函数执行完成后执行一些清理工作。例如:
func f() { defer fmt.Println("Done.") fmt.Println("Working.") } f() // 输出 "Working." 和 "Done."
在这个例子中,我们定义了一个名为f
的函数,它包含两个语句。第一个语句打印"Working.",第二个语句使用defer
关键字打印"Done."。由于defer
关键字的存在,第二个语句将在函数执行完成后输出。
另外,defer
rrreee
Dans cette fonction, nous déclarons deux paramètres de type entiera
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!