Rumah > pembangunan bahagian belakang > Golang > Apakah parameter tidak tentu dalam bahasa go?

Apakah parameter tidak tentu dalam bahasa go?

青灯夜游
Lepaskan: 2023-01-17 15:33:55
asal
2199 orang telah melayarinya

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.

Apakah parameter tidak tentu dalam bahasa go?

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 sintaks

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))
}
Salin selepas log masuk
Parameter tidak tentu mempunyai ciri-ciri berikut:

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.
  • ...

⑤ Fungsi yang parameter formalnya adalah parameter tak tentu adalah jenis yang berbeza daripada fungsi yang parameter formalnya adalah hirisan.
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
}
Salin selepas log masuk
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)
}
Salin selepas log masuk

Apakah parameter tidak tentu dalam bahasa go?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
}
Salin selepas log masuk

[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)
}
Salin selepas log masuk
Pengajaran pengaturcaraan

]

Atas ialah kandungan terperinci Apakah parameter tidak tentu dalam bahasa go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan