Go- 可变参数函数

版权声明: 本文为 InfoQ 作者【HelloBug】的原创文章。
原文链接:【http://xie.infoq.cn/article/3bfcad5be32570949fab84e84】。
本文遵守【CC BY-NC-ND】协议,转载请保留原文出处及本版权声明。

Go 学习笔记,学习内容《Go入门指南》
主要介绍以下内容:
函数可变参数
可变参数传参
空接口 interface{}
代码示例可以直接运行
package main
import ( "fmt")
func main() { num := min(1, 2, 3, 4, 5) // 变长整型传递参数 fmt.Println(num)
slice := []int{6, 7, 8, 9} num = min(slice...) // 变长整型传递slice fmt.Println(num)
printStr1("Hi", "Guys") // 可变参数函数内调用可变参数函数
/* 可变参数中的参数类型不同时,使用默认的空接口 interface{} */ printVar(5, "Good", 3.1415926, false)
/* 以下代码块编译错误:use of .(type) outside type switch */ //var x int //fmt.Println(x.(type))}
/* 获得参数中的最小值*/func min(s ...int) int { if len(s) == 0 { return 0 }
num := s[0] for _, val := range s { if val < num { num = val } }
return num}
func printStr1(s ...string) { printStr2(s...) // 函数形参为可变参数 printStr3(s) // 函数形参为切片}
func printStr2(s ...string) { for _, str := range s { fmt.Println("printStr2: " + str) }}
func printStr3(s []string) { for _, str := range s { fmt.Println("printStr3: " + str) }}
func printVar(vars ...interface{}) { for _, v := range vars { switch v.(type) { case int: fmt.Println("int: ", v) case string: fmt.Println("string: ", v) case float64: fmt.Println("float64: ", v) case bool: fmt.Println("bool: ", v) } }}版权声明: 本文为 InfoQ 作者【HelloBug】的原创文章。
原文链接:【http://xie.infoq.cn/article/3bfcad5be32570949fab84e84】。
本文遵守【CC BY-NC-ND】协议,转载请保留原文出处及本版权声明。
还未添加个人签名 2018.09.20 加入
还未添加个人简介

促进软件开发及相关领域知识与创新的传播
京公网安备 11010502039052号


评论