【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 ./...




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM