不定參數是指函數傳入的參數個數為不定數量;不定參數宣告使用「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影片教學###、###程式設計教學###】###
以上是go語言中不定參數是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

go语言有缩进。在go语言中,缩进直接使用gofmt工具格式化即可(gofmt使用tab进行缩进);gofmt工具会以标准样式的缩进和垂直对齐方式对源代码进行格式化,甚至必要情况下注释也会重新格式化。

本篇文章带大家了解一下golang 的几种常用的基本数据类型,如整型,浮点型,字符,字符串,布尔型等,并介绍了一些常用的类型转换操作。

go语言叫go的原因:想表达这门语言的运行速度、开发速度、学习速度(develop)都像gopher一样快。gopher是一种生活在加拿大的小动物,go的吉祥物就是这个小动物,它的中文名叫做囊地鼠,它们最大的特点就是挖洞速度特别快,当然可能不止是挖洞啦。

是,TiDB采用go语言编写。TiDB是一个分布式NewSQL数据库;它支持水平弹性扩展、ACID事务、标准SQL、MySQL语法和MySQL协议,具有数据强一致的高可用特性。TiDB架构中的PD储存了集群的元信息,如key在哪个TiKV节点;PD还负责集群的负载均衡以及数据分片等。PD通过内嵌etcd来支持数据分布和容错;PD采用go语言编写。

在写 Go 的过程中经常对比这两种语言的特性,踩了不少坑,也发现了不少有意思的地方,下面本篇就来聊聊 Go 自带的 HttpClient 的超时机制,希望对大家有所帮助。

go语言需要编译。Go语言是编译型的静态语言,是一门需要编译才能运行的编程语言,也就说Go语言程序在运行之前需要通过编译器生成二进制机器码(二进制的可执行文件),随后二进制文件才能在目标机器上运行。

删除map元素的两种方法:1、使用delete()函数从map中删除指定键值对,语法“delete(map, 键名)”;2、重新创建一个新的map对象,可以清空map中的所有元素,语法“var mapname map[keytype]valuetype”。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

SublimeText3 Linux新版
SublimeText3 Linux最新版