go語言中不定參數是什麼
不定參數是指函數傳入的參數個數為不定數量;不定參數宣告使用「param ...type」的語法格式。不定參數的特性:1、所有的不定參數類型必須是相同的;2、不定參數必須是函數的最後一個參數;3、不定參數在函數體內相當於一個切片,對切片的操作同樣適合對不定參數的操作;4、切片可作為參數傳遞給不定參數,切片名後要加上“...”;5、形參為不定參數的函數和形參為切片的函數類型不相同。
本教學操作環境:windows7系統、GO 1.18版本、Dell G3電腦。
不定參數是什麼
不定參數是指函數傳入的參數數量為不定數。
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) }
不定參數的傳遞
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語言中不定參數是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Go語言中使用RedisStream實現消息隊列時類型轉換問題在使用Go語言與Redis...

GoLand中自定義結構體標籤不顯示怎麼辦?在使用GoLand進行Go語言開發時,很多開發者會遇到自定義結構體標籤在�...

Go語言中哪些庫是大公司開發或知名開源項目?在使用Go語言進行編程時,開發者常常會遇到一些常見的需求,�...

Go語言在構建高效且可擴展的系統中表現出色,其優勢包括:1.高性能:編譯成機器碼,運行速度快;2.並發編程:通過goroutines和channels簡化多任務處理;3.簡潔性:語法簡潔,降低學習和維護成本;4.跨平台:支持跨平台編譯,方便部署。

Go編程中的資源管理:Mysql和Redis的連接與釋放在學習Go編程過程中,如何正確管理資源,特別是與數據庫和緩存�...

Golang在性能和可擴展性方面優於Python。 1)Golang的編譯型特性和高效並發模型使其在高並發場景下表現出色。 2)Python作為解釋型語言,執行速度較慢,但通過工具如Cython可優化性能。

使用Go語言連接Oracle數據庫時是否需要安裝Oracle客戶端?在使用Go語言開發時,連接Oracle數據庫是一個常見需求�...
