go语言中不定参数指的是什么

这篇“go语言中不定参数指的是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“go语言中不定参数指的是什么”文章吧。

公司主营业务:成都网站制作、网站设计、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联建站是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联建站推出平坝免费做网站回馈大家。

不定参数是指函数传入的参数个数为不定数量;不定参数声明使用“param ...type”的语法格式。不定参数的特点:1、所有的不定参数类型必须是相同的;2、不定参数必须是函数的最后一个参数;3、不定参数在函数体内相当于一个切片,对切片的操作同样适合对不定参数的操作;4、切片可作为参数传递给不定参数,切片名后要加上“...”;5、形参为不定参数的函数和形参为切片的函数类型不相同。

不定参数是什么

不定参数是指函数传入的参数个数为不定数量。

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

Go函数支持不定数目的形式参数,不定参数声明使用param ...type的语法格式

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

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

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

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

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

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

go语言中不定参数指的是什么

不定参数的传递

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

以上就是关于“go语言中不定参数指的是什么”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注创新互联行业资讯频道。


网站栏目:go语言中不定参数指的是什么
网页地址:http://ybzwz.com/article/jjphgi.html