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

Aller aux bases du langage-fonction

Libérer: 2023-07-21 11:45:58
avant
817 Les gens l'ont consulté

Qu'est-ce qu'une fonction ?

Les fonctions sont des blocs de code qui effectuent des tâches spécifiques. Une fonction prend une entrée, effectue des calculs sur l'entrée et produit une sortie.

Déclaration de fonction

La syntaxe de déclaration de fonction du langage Go est la suivante :

func functionname(parametername type) returntype {
 //function body
}
Copier après la connexion

La déclaration de fonction commence par le mot-clé func, suivi du nom de la fonction. Les paramètres sont spécifiés entre crochets (), suivis du type de retour de la fonction. La syntaxe pour spécifier les paramètres est le nom du paramètre suivi du type du paramètre. Vous pouvez spécifier n'importe quel nombre de paramètres, comme ceci :

(parameter1 type, parameter2 type)
Copier après la connexion

La partie principale de la fonction est placée entre accolades.

Les paramètres et les valeurs de retour sont facultatifs, donc la méthode de déclaration suivante est également une déclaration de fonction valide :

func functionname() {
}
Copier après la connexion

Fonction simple

Écrivons une fonction dont les paramètres sont le prix unitaire du produit et la quantité du produit, pour calculer le prix total du produit et le restituer.

func calculateBill(price int, no int) int {
    var totalPrice = price * no
    return totalPrice
}
Copier après la connexion

Les paramètres d'entrée de la fonction ci-dessus sont price et no, tous deux de type int. Le produit des deux est attribué à totalPrice et renvoyé comme valeur de retour totalPrice est également de type int.

Si les paramètres consécutifs sont du même type, nous pouvons éviter de spécifier le type pour chaque paramètre et n'avons besoin que de spécifier le type du dernier paramètre Par exemple, price int, no int peut être écrit comme price, no int. , donc La fonction ci-dessus peut être modifiée en :

func calculateBill(price, no int) int {
    var totalPrice = price * no
    return totalPrice
}
Copier après la connexion

Maintenant que nous avons écrit une fonction, essayons d'appeler cette fonction. La syntaxe pour appeler une fonction est functionname(parameters). La fonction ci-dessus peut être appelée comme suit :

calculateBill(10, 5)
Copier après la connexion

Ce qui suit est le programme terminé :

package main

import (
    "fmt"
)

func calculateBill(price, no int) int {
    var totalPrice = price * no
    return totalPrice
}

func main() {
    price, no := 90, 6
    totalPrice := calculateBill(price, no)
    fmt.Println("Total price is", totalPrice)
}
Copier après la connexion

Execution[1]

Le code de sortie ci-dessus :

Total price is 540
Copier après la connexion

多值返回

Go 语言是允许函数返回多个值的。我们来写一个 rectProps() 函数,该函数的参数是长方形的 length 和 width,返回长方形的 area(面积) 和 perimeter(周长)。

package main

import (
    "fmt"
)

func rectProps(length, width float64)(float64, float64) {
    var area = length * width
    var perimeter = (length + width) * 2
    return area, perimeter
}

func main() {
     area, perimeter := rectProps(10.8, 5.6)
    fmt.Printf("Area %f Perimeter %f", area, perimeter)
}
Copier après la connexion

执行[2]

如果一个函数返回多个值则需要使用 () 指定,比如:

func rectProps(length, width float64)(float64, float64)
Copier après la connexion

该函数有两个 float64 参数 length 和 width,也返回两个 float64 类型的值。

上面的代码输出:

Area 60.480000 Perimeter 32.800000
Copier après la connexion

命名返回值

可以从函数返回命名值。如果返回值被命名,则可以认为它在函数的第一行被声明为变量,并初始化为相应类型的零值。

上面的 rectProps() 函数可以使用命名的返回值重写:

func rectProps(length, width float64)(area, perimeter float64) {
    area = length * width
    perimeter = (length + width) * 2
    return //no explicit return value
}
Copier après la connexion

area 和 perimeter 是函数中命名的返回值。

需要注意的是,函数里的 return 语句没有返回任何值。由于在函数声明中将 area 和 perimeter 指定为返回值,因此当遇到 return 语句时,它们会自动从函数中返回。

空白符

Go 语言里面,下划线 _ 可以被当做空白符使用。它可以用来代替任何类型的任何值,让我们看看这个空白标识符有什么用。

rectProps() 函数返回长方形的面积和周长。如果我们只想要面积,而不想要周长那该怎么办呢?这时候空百符 _ 就可以派上用场了。

package main

import (
    "fmt"
)

func rectProps(length, width float64) (float64, float64) {
    var area = length * width
    var perimeter = (length + width) * 2
    return area, perimeter
}
func main() {
    area, _ := rectProps(10.8, 5.6) // perimeter is discarded
    fmt.Printf("Area %f ", area)
}
Copier après la connexion

执行[3]

上面代码的第 13 行,我们接收了函数返回的 area,并使用 _ 忽略了 perimeter。

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:Go语言进阶学习
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