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 ?

青灯夜游
Libérer: 2023-01-17 15:33:55
original
2169 Les gens l'ont consulté

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))
}
Copier après la connexion

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
}
Copier après la connexion
⑤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.

🎜🎜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
}
Copier après la connexion
🎜🎜🎜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)
}
Copier après la connexion
🎜[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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal