Maison >développement back-end >Golang >Références multiples dans les paramètres de fonction et valeurs de retour des fonctions Golang
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 retourde 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 sub
respectivement via des instructions d'affectation . > et mul
et imprimez la sortie. add
函数有两个 int
类型的参数和三个 int
类型的返回值。在 main
函数中,我们通过赋值语句将 add
函数返回的三个参数分别存储到 sum
、sub
和 mul
变量中,并打印输出。
除了基本类型之外,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
函数,并将返回值分别存储到 resArr
、resPtr
和 resLen
变量中。最后,我们在控制台打印输出了 resArr
、resPtr
和 resLen
的值,以及 arr
和 ptr
的值。从结果可以看出,arr
的第一个元素被修改为了 2,ptr
的值被修改为了 8,这是因为 modify
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!