golang中不定参数与数组切片的区别

package main

import "fmt"

func main() {
    myfunc1(88, 42, 12, 56) //传递不定数量的参数
    myfunc2([]int{88, 42, 12, 56}) //传递一个数组切片
}

func myfunc1(args ...int) {    //接受不定数量的参数,这些参数的类型全部是int
    for _, arg := range args {
        fmt.Println(arg)
    }
}

func myfunc2(args []int) {    //传递一个数组切片
    for _, arg := range args {
        fmt.Println(arg)
    }
}

参考资料:

《Go语言编程》 2.5.3 不定参数

时间: 2024-08-01 22:42:49

golang中不定参数与数组切片的区别的相关文章

了解golang的不定参数(... parameters),这一篇就够了

在实际开发中,总有一些函数的参数个数是在编码过程中无法确定的,比如我们最常用的fmt.Printf和fmt.Println: fmt.Printf("一共有%v行%v列\n", rows, cols) fmt.Println("共计大小:", size) 当你需要实现类似的接口时,就需要我们的不定参数出场了. golang的不定参数 顾名思义,不定参数就是一个占位符,你可以将1个或者多个参数赋值给这个占位符,这样不管实际参数的数量是多少,都能交给不定参数来处理,我们

Golang的不定参数

在很多语言中都提供了不定参数和函数重载以及函数式语言中得闭包来提高函数的灵活性.如果使用过fmt包里的函数,那么你就已经接触到了Golang的不定参数了.那么如何定义一个自己的不定参数的函数呢? 一.函数定义 首先来看如何定义一个不定参数的函数: func YourFun(v... interface{}){ } 该函数定义,定义了一个接受任何数目任何类型参数的函数.这里特殊的语法是三个点"...",在一个变量后面加上三个点后,表示从该处开始接受不定参数,不同于python,golan

Golang中的Slice与数组

1.Golang中的数组 数组是一种具有固定长度的基本数据结构,在golang中与C语言一样数组一旦创建了它的长度就不允许改变,数组的空余位置用0填补,不允许数组越界. 数组的一些基本操作: 1.创建数组: func main() { var arr1 = [...]int{1,2,3,4} //[...]默认为元素的数量即为数组的长度 fmt.Println(len(arr1)) //4 arr1[4] = 5 //panic 数组越界 fmt.Println(arr1) var arr2 =

给数组赋值时,引用与数组切片的区别

例1:引用赋值 arr = [1, 2, 3, 4, 5, 6, 7] # 初始数组 print(id(arr), arr) arr = arr[1:3] # 类似于 aux = arr[1:3], arr = aux print(id(arr), arr) 运行结果: 4357105608 [1, 2, 3, 4, 5, 6, 7] 4357104200 [2, 3] 其实arr是aux的一个引用,而对于arr[1:3]系统会自动给其分配地址 所以前后arr的地址不一样 例2:数组切片赋值 a

golang 中可变参数的个数

package main import "fmt" func Greeting(prefix string, who ... string) { fmt.Println(prefix) //接收到who是一个数组,可以用for遍历. for _, name := range who { fmt.Println(name) } } func main() { Greeting("Hello:", "tom", "mike", &

js中函数参数基本类型和引用类型的区别

高级程序设计中说明,所有函数的参数都是按值传递的. 基本类型 向参数传递基本类型的值时,被传递的值会被复制给对应的命名参数 function addTen(num){ num=+10; return num; } var count=20; var result=addTen(count); alert(count);//20 在函数内部,num的值被加上10,但不影响外部count变量的值 引用类型 在向参数传递引用类型的值时,把这个值在内存中的地址复制给对应的局部变量,如果这个局部变量没有重

python中函数参数*args和**kw的区别

1.函数与参数(实参) 在python中创建函数是def,创建函数名是def f(),f函数名字,def f(a,b),这里的a,b是两个参数,函数名是自定义的,参数也是自定义,随意就好.看图如下效果: 这里f(1,2)是实参,然后调用上面的函数. 下面讲解下*args和**kw的区别. 2.*args 这里的*后面的值是自定义的,只要不是数字就行,定义成*abc,*ccc都可以,len()是函数,它的意思是返回字符串长度.然后前面的a,b是普通参数,print a print b就是回显1,2

go语言-golang基础-数据类型数组,数组切片,映射

7.7 数组 数组是Go语言编程中最常用的数据结构之一.顾名思义,数组就是指一系列同一类型数据的集合.数组中包含的每个数据被称为数组元素(element),一个数组包含的元素个数被称为数组的长度. 以下为一些常规的数组声明方法: [32]byte // 长度为32的数组,每个元素为一个字节 [2*N] struct { x, y int32 } // 复杂类型数组 [1000]*float64 // 指针数组 [3][5]int // 二维数组 [2][2][2]float64 // 等同于[2

java的不定参数,可变参数Object ...

对于java中不定参数,或者是可变参数Object ... 这是JDK1.5的新特性 针对不定参数的其他问题,可以参考Java不定长度参数[http://blog.chinaunix.net/uid-200142-id-3124427.html]