Les paramètres indéfinis signifient que le nombre de paramètres transmis par la fonction est un nombre indéfini ; la déclaration du paramètre indéfini utilise le format syntaxique de "param...type". Caractéristiques des paramètres indéfinis : 1. Tous les types de paramètres indéfinis doivent être identiques ; 2. Le paramètre indéfini doit être le dernier paramètre de la fonction 3. Le paramètre indéfini est équivalent à une tranche dans le corps de la fonction et au fonctionnement de la fonction. slice convient également au fonctionnement avec des paramètres indéfinis ; 4. Les tranches peuvent être passées en tant que paramètres à des paramètres indéfinis, et "..." doit être ajouté après le nom de la tranche 5. Les types de fonctions dont les paramètres formels sont des paramètres indéfinis sont différents ; de ceux des fonctions dont les paramètres formels sont des tranches.
L'environnement d'exploitation de ce tutoriel : système Windows 7, GO version 1.18, ordinateur Dell G3.
Que sont les paramètres indéfinis ?
Les paramètres indéfinis signifient que le nombre de paramètres transmis par la fonction est un nombre indéfini.
package main import ( "fmt" ) /* 不定参数函数 */ func Add(a int, args ...int) (result int) { result += a for _, arg := range args { result += arg } return } func main() { fmt.Println(Add(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)) }
La fonction Go prend en charge un nombre indéfini de paramètres formels. La déclaration des paramètres variables utilise le format syntaxique de param...type
param ...type
的语法格式
不定参数有以下几个特点:
①所有的不定参数类型必须是相同的。
②不定参数必须是函数的最后一个参数。
③不定参数在函数体内相当于一个切片,对切片的操作同样适合对不定参数的操作。
④切片也可以作为参数传递给不定参数,切片名称后面要加上“...
③Le paramètre indéfini est équivalent à une tranche dans le corps de la fonction, et l'opération sur la tranche convient également à l'opération sur le paramètre indéfini. ④Les tranches peuvent également être transmises en tant que paramètres à des paramètres indéfinis, et "...
" doit être ajouté après le nom de la tranche.
package main
import "fmt"
func Add(arr ...int) int {
var count int
arr1 := arr[1:]
for _, val := range arr1 {
count += val
}
return count
}
func main() {
slice := []int{1, 2, 3, 4, 5}
//array := [...]int{1, 2, 3, 4}
fmt.Println(Add(slice...))
//fmt.Println(Add(array...)) //cannot use array (variable of type [4]int) as parameter of type []int
}
package main
import "fmt"
func Add1(arr ...int) int {
return arr[0]
}
func Add2(arr []int) int {
return arr[0]
}
func main() {
fmt.Printf("%T\n", Add1)
fmt.Printf("%T\n", Add2)
}
func SetData(args ...int) (result int) { //不定参数的传递 return Add(1, args...) } func main() { fmt.Println(SetData(1, 2, 3))//输出7 array := []int{1, 2, 3, 4} fmt.Println(Add(1, array...))//输出11 }
/* 任意类型的不定参数,用interface{}表示 */ func MyPrintf(args ...interface{}) { for _, arg := range args { //迭代不定参数 switch arg.(type) { case int: fmt.Println(arg, "is int") case string: fmt.Println(arg, "is string") case float64: fmt.Println(arg, "is float64") case bool: fmt.Println(arg, " is bool") default: fmt.Println("未知的类型") } } } func main() { /*输出结果: 12 is int haha is string 12.5 is float64 false is bool -12.5 is float64 */ MyPrintf(12, "haha", 12.5, false, -12.5) }
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!