写点什么

Go- 可变参数函数

用户头像
HelloBug
关注
发布于: 2 小时前
Go- 可变参数函数

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) } }}
复制代码


发布于: 2 小时前阅读数: 2
用户头像

HelloBug

关注

还未添加个人签名 2018.09.20 加入

还未添加个人简介

评论

发布
暂无评论
Go- 可变参数函数