Maison  >  Article  >  développement back-end  >  Aller aux bases du langage-fonction

Aller aux bases du langage-fonction

Go语言进阶学习
Go语言进阶学习avant
2023-07-21 11:45:58808parcourir

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
}

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)

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() {
}

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
}

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
}

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)

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)
}

Execution[1]

Le code de sortie ci-dessus :

Total price is 540

多值返回

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)
}

执行[2]

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

func rectProps(length, width float64)(float64, float64)

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

上面的代码输出:

Area 60.480000 Perimeter 32.800000

命名返回值

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

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

func rectProps(length, width float64)(area, perimeter float64) {
    area = length * width
    perimeter = (length + width) * 2
    return //no explicit return value
}

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)
}

执行[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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer