Parameter tak tentu bermaksud bilangan parameter yang dihantar oleh fungsi ialah nombor tak tentu; Ciri-ciri parameter tak tentu: 1. Semua jenis parameter tak tentu mestilah sama; 2. Parameter tak tentu mesti parameter terakhir bagi fungsi itu slice juga sesuai untuk operasi parameter tak tentu; 4. Slice boleh dihantar sebagai parameter kepada parameter tak tentu, dan "..." mesti ditambah selepas nama slice 5. Jenis fungsi yang parameter formalnya adalah parameter tak tentu; daripada fungsi yang parameter formalnya adalah kepingan.
Persekitaran pengendalian tutorial ini: sistem Windows 7, GO versi 1.18, komputer Dell G3.
Apakah itu parameter tak tentu?
Fungsi Go menyokong bilangan parameter formal yang tidak ditentukan Pengisytiharan parameter tidak tentu menggunakan format sintakspackage 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)) }
param ...type
①Semua jenis parameter pembolehubah mestilah sama.
②Parameter tidak tentu mestilah parameter terakhir fungsi.
③Parameter tak tentu adalah bersamaan dengan hirisan dalam badan fungsi, dan operasi pada hirisan juga sesuai untuk operasi pada parameter tak tentu.
④ Potongan juga boleh dihantar sebagai parameter kepada parameter tidak tentu dan "
" mesti ditambah selepas nama kepingan....
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) }
Melalui parameter tidak tentu
Sebarang jenis parameter tidak tentu
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 }
[Cadangan berkaitan: Tutorial video Pergi
,/* 任意类型的不定参数,用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) }
Atas ialah kandungan terperinci Apakah parameter tidak tentu dalam bahasa go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!