Golang--不定參數類型


1、不定參數類型

不定參數是指函數傳入的參數個數為不定數量。

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

代碼中的args是一個數組切片,而且只能放在參數中的最后面。

2、不定參數的傳遞

package main

import (
	"fmt"
)

//不定參數函數
func Add(a int, args ...int) (result int) {
	result += a
	for _, arg := range args {
		result += arg
	}
	return
}

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
}

3、任意類型的不定參數

package main

import (
	"fmt"
)

/*
任意類型的不定參數,用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() {
	/*輸出結果:
	  1 is int
	  test is string
	  1.5 is float64
	  false is bool
	  -1.5 is float64
	*/
	MyPrintf(1, "test", 1.5, false, -1.5)
}


免責聲明!

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



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