zoukankan      html  css  js  c++  java
  • 【Golang】Go中三个点(...)用法

    众所周知,Go语言是严格类型语言,而开发的时候又遇到传入参数不定的情况,怎么办?

    这里的三个点(…),就给我们编程人员带来很大的灵活性,具体如下

    在Golang中,三个点一共会用在四个地方(话说三个点的官方说法是什么?):

    代码如下:

    package main
    
    import (
    	"fmt"
    	"log"
    )
    
    func main() {
    	//multiParam 可以接受可变数量的参数
    
    	names := []string{"jerry", "herry"}
    
    	//在数组文字中,...符号指定的长度等于文字中元素的数量。
    	stooges := [...]string{"Moe", "Larry", "Curly"}
    	stoogxs := []string{"Moe", "Larry", "Curly"}
    
    	strParam("jerry", "herry")
    	strParam(names...)
    
    	//通过append合并两个slice
    	stoogxs = append(stoogxs, names...)
    	fmt.Println(stoogxs)
    
    	//标识数组元素个数,这里,...意味着数组的元素个数
    	log.Println(len(stooges))
    
    	nums := []int{4, 5, 6}
    	stoogns := [...]int{4, 5, 6}
    
    	intParam(1, 2, 3)
    	intParam(nums...)
    
    	//标识数组元素个数,这里,...意味着数组的元素个数
    	log.Println(len(stoogns))
    }
    
    func strParam(args ...string) {
    	//接受的参数放在args数组中
    	for _, e := range args {
    		log.Println(e)
    	}
    }
    
    func intParam(args ...int) {
    	res := 0
    	for _, n := range args {
    		res += n
    	}
    	log.Println(res)
    
    }

    变长的函数参数

    如果最后一个函数参数的类型的是...T,那么在调用这个函数的时候,我们可以在参数列表的最后使用若干个类型为T的参数。这里,...T在函数内部的类型实际是[]T.

    func intParam(args ...int) {
    	res := 0
    	for _, n := range args {
    		res += n
    	}
    	log.Println(res)
    }

    调用拥有变长参数列表的函数

    上面调用Sum函数时,是将变长参数分开写的。如果我们有一个slice,那么我们调用时不必将slice拆开再调用,直接在slice后跟...即可:

    nums := []int{4, 5, 6}
    intParam(nums...)

    标识数组元素个数

    这里,...意味着数组的元素个数:

    stooges := [...]string{"Moe", "Larry", "Curly"} // len(stooges) == 3

    Go命令行中的通配符

    描述包文件的通配符。
    在这个例子中,会单元测试当前目录和所有子目录的所有包:

    go test ./...



  • 相关阅读:
    AsyncTask的用法
    关于 android setAnimationStyle 的问题
    android有关bluetooth常用api简介
    Android调用系统Activity选取图像部分区域
    Android 关于ListView几个特别的属性
    Android应用界面动画切换(主要Tabhost中跳转出来的动画效果解决[转]
    ✿Android 3.1 久违的 USB、mtp、rtp
    读《C++沉思录》心得:拷贝构造函数
    Cloud Foundy入门
    HDFS读文件详解
  • 原文地址:https://www.cnblogs.com/chenpingzhao/p/15359022.html
Copyright © 2011-2022 走看看