package main import"fmt" funcmain() { uncertain(3,4,5,6,7) } // 接收不固定参数 funcuncertain( number ...int)int { fmt.Printf("类型: %T 值: %v \n", number,number) var total int for _,val := range number { total += val } fmt.Printf("总和: %v",total) return total } /* 输出: 类型: []int 值: [3 4 5 6 7] 总和: 25 */
funcmain() { res := testFunc("hello,word! go is best language!!", funcParam) fmt.Println("结果: " + res) }
// 定义一个函数,接收字符串和函数类型: f func(string)string functestFunc(str string, f func(string)string) string { return f(str) }
// 定义一个函数 funcfuncParam(str string)string { result := "" for i, val := range str { if i % 2 == 0 { // 偶数位置转成大写 result += strings.ToUpper(string(val)) } else { // 奇数位置转成小写 result += strings.ToLower(string(val)) } } return result }
示例2: 声明函数类型
package main
import ( "fmt" "strings" ) // 先声明一个函数类型 type strConvert func(string)string funcmain() { res := testFunc("hello,word! go is best language!!", funcParam) fmt.Println("结果: " + res) }
// 定义一个函数 funcfuncParam(str string)string { result := "" for i, val := range str { if i % 2 == 0 { // 偶数位置转成大写 result += strings.ToUpper(string(val)) } else { // 奇数位置转成小写 result += strings.ToLower(string(val)) } } return result }