Maison >développement back-end >Golang >Références multiples dans les paramètres de fonction et valeurs de retour des fonctions Golang

Références multiples dans les paramètres de fonction et valeurs de retour des fonctions Golang

WBOY
WBOYoriginal
2023-05-17 09:40:351229parcourir

Golang est un langage statique fortement typé qui prend en charge la programmation fonctionnelle. Il est conçu pour améliorer l'efficacité du fonctionnement du programme et le rendre facile à développer et à maintenir. Dans Golang, une fonction peut avoir plusieurs paramètres et valeurs de retour, et ces paramètres et valeurs de retour peuvent être de différents types ou types de référence. Cet article présentera plusieurs références dans les paramètres de fonction et les valeurs de retour des fonctions Golang.

Dans Golang, les fonctions peuvent avoir plusieurs paramètres et valeurs de retour, ce qui permet aux développeurs de combiner et de transmettre des données de manière flexible. Parmi les paramètres d'une fonction, s'il existe plusieurs paramètres de types référence, alors ces références seront transmises à la fonction sous forme d'adresses. Dans la valeur de retour d'une fonction, si plusieurs valeurs de retour sont des types référence, ces références seront renvoyées vers l'extérieur de la fonction sous forme de pointeurs.

Ce qui suit est un exemple montrant plusieurs paramètres et valeurs de retour​​de fonctions dans Golang :

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

func main() {
    sum, sub, mul := add(3, 2)
    fmt.Printf("sum = %d, sub = %d, mul = %d
", sum, sub, mul)
}

Dans le code ci-dessus, la fonction add a deux int types Paramètres et trois valeurs de retour de type int. Dans la fonction main, nous stockons les trois paramètres renvoyés par la fonction add dans sum et subrespectivement via des instructions d'affectation . > et mul et imprimez la sortie. add 函数有两个 int 类型的参数和三个 int 类型的返回值。在 main 函数中,我们通过赋值语句将 add 函数返回的三个参数分别存储到 sumsubmul 变量中,并打印输出。

除了基本类型之外,Golang 还提供了指针类型和切片类型等复合类型。在函数的参数和返回值中,如果有多个参数或返回值是复合类型,那么这些复合类型可以是引用类型,也可以是值类型。如果是引用类型,那么它们将会以指针的形式传递或返回,这意味着它们可以在函数内部或外部改变原始数据。如果是值类型,那么它们将会被复制,在函数内部或外部改变原始数据的副本。

以下是一个示例展示了 Golang 中函数的多个参数和返回值中的复合类型:

func modify(arr []int, ptr *int) ([]int, *int, int) {
    arr[0] = arr[0] * 2
    *ptr = *ptr * 2
    return arr, ptr, len(arr)
}

func main() {
    arr := []int{1, 2, 3}
    ptr := new(int)
    *ptr = 4
    resArr, resPtr, resLen := modify(arr, ptr)
    fmt.Printf("resArr = %v, resPtr = %d, resLen = %d
", resArr, *resPtr, resLen)
    fmt.Printf("arr = %v, ptr = %d
", arr, *ptr)
}

在上面的代码中,modify 函数有一个切片类型的参数和一个指针类型的参数,以及一个切片类型的返回值、一个指针类型的返回值和一个整型的返回值。在 modify 函数内部,它首先将切片的第一个元素乘以 2,然后将指针所指向的值乘以 2,最后将修改后的切片、指针和切片的长度作为返回值返回到函数外部。

main 函数中,我们创建一个切片 arr 和一个指针 ptr,并将 arr 的第一个元素初始化为 1,将 ptr 指向的值初始化为 4,然后调用 modify 函数,并将返回值分别存储到 resArrresPtrresLen 变量中。最后,我们在控制台打印输出了 resArrresPtrresLen 的值,以及 arrptr 的值。从结果可以看出,arr 的第一个元素被修改为了 2,ptr 的值被修改为了 8,这是因为 modify

En plus des types de base, Golang propose également des types composites tels que les types de pointeur et les types de tranches. Parmi les paramètres et les valeurs de retour d'une fonction, s'il existe plusieurs paramètres ou valeurs de retour qui sont des types composites, alors ces types composites peuvent être des types référence ou des types valeur. S'il s'agit de types référence, ils seront transmis ou renvoyés sous forme de pointeurs, ce qui signifie qu'ils peuvent modifier les données d'origine à l'intérieur ou à l'extérieur de la fonction. S'il s'agit de types valeur, ils seront copiés, modifiant ainsi la copie des données d'origine à l'intérieur ou à l'extérieur de la fonction.

Ce qui suit est un exemple montrant les types composites dans plusieurs paramètres et les valeurs de retour d'une fonction dans Golang : 🎜rrreee🎜Dans le code ci-dessus, la fonction modify a un paramètre de type slice et un pointeur paramètres de type, et une valeur de retour de type tranche, une valeur de retour de type pointeur et une valeur de retour de type entier. À l'intérieur de la fonction modify, elle multiplie d'abord le premier élément de la tranche par 2, puis multiplie la valeur pointée par le pointeur par 2, et renvoie enfin la tranche modifiée, le pointeur et la longueur de la tranche. La valeur est renvoyée en dehors de la fonction. 🎜🎜Dans la fonction main, nous créons une tranche arr et un pointeur ptr, et définissons le premier de arr > Un élément est initialisé à 1, la valeur pointée par ptr est initialisée à 4, puis la fonction modify est appelée, et la valeur de retour est stockée dans resArr respectivement, les variables resPtr et resLen. Enfin, nous avons imprimé les valeurs de resArr, resPtr et resLen sur la console, ainsi que les valeurs de arr et ptr. Il ressort des résultats que le premier élément de arr est modifié à 2 et que la valeur de ptr est modifiée à 8. En effet, modify Leurs valeurs sont modifiées en interne par la fonction. 🎜🎜En bref, dans Golang, une fonction peut avoir plusieurs paramètres et valeurs de retour, et ces paramètres et valeurs de retour peuvent être de différents types, et ils peuvent être des types référence ou des types valeur. S'il s'agit de types référence, ils seront passés ou renvoyés sous forme de pointeurs, ce qui leur permet de modifier les données d'origine à l'intérieur ou à l'extérieur de la fonction. S'il s'agit de types valeur, ils seront copiés, mais les données d'origine ne seront pas affectées. La maîtrise de plusieurs paramètres et valeurs de retour des fonctions est très utile pour écrire des fonctions Golang efficaces, flexibles et faciles à maintenir. 🎜

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:
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