Maison >développement back-end >Golang >Que sont les paramètres indéfinis dans le langage Go ?

Que sont les paramètres indéfinis dans le langage Go ?

青灯夜游
青灯夜游original
2023-01-17 15:33:552166parcourir

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.

Que sont les paramètres indéfinis dans le langage Go ?

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...typeparam ...type的语法格式

不定参数有以下几个特点:

  • ①所有的不定参数类型必须是相同的。

  • ②不定参数必须是函数的最后一个参数。

  • ③不定参数在函数体内相当于一个切片,对切片的操作同样适合对不定参数的操作。

  • ④切片也可以作为参数传递给不定参数,切片名称后面要加上“...

    Les paramètres indéfinis ont les caractéristiques suivantes :
  • ①Tous les paramètres indéfinis Les types doivent être les mêmes.

②Le paramètre indéfini doit être le dernier paramètre de la fonction.

Que sont les paramètres indéfinis dans le langage Go ?

③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
}
⑤La fonction dont les paramètres formels sont des paramètres indéfinis et la fonction dont les paramètres formels sont des tranches sont de types différents.

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)
}

🎜🎜Transfert de paramètres indéfinis🎜🎜🎜
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
}
🎜🎜🎜Tout type de paramètres indéfinis🎜🎜🎜
/*
任意类型的不定参数,用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)
}
🎜[Recommandations associées : 🎜Tutoriel vidéo Go🎜, 🎜Enseignement de la programmation 🎜】🎜

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