1、函数语法要点
- 返回值类型写在最后面
- 可以返回多个值
- 函数可以作为参数
- 没有默认参数,可选参数
2、Go 语言函数定义格式如下:
func function_name( [parameter list] ) [return_types] { 函数体 }
- func:函数由 func 开始声明
- function_name:函数名称,函数名和参数列表一起构成了函数签名。
- parameter list:参数列表,参数就像一个占位符,当函数被调用时,你可以将值传递给参数,这个值被称为实际参数。参数列表指定的是参数类型、顺序、及参数个数。参数是可选的,也就是说函数也可以不包含参数。
- return_types:返回类型,函数返回一列值。return_types 是该列值的数据类型。有些功能不需要返回值,这种情况下 return_types 不是必须的。
- 函数体:函数定义的代码集合。
3、实例
package main import ( "fmt" "io/ioutil" ) func bounded(v int) string { if v > 100 { return "A" } else if v > 80 { return "B" } else { return "C" } } func eval (a,b int, op string) int { var result int switch op { case "+": result = a + b case "-": result = a - b case "*": result = a * b case "/": result = a / b default: panic("unsupport op:" + op) } return result } func grade(v int) string { var g string switch { case v < 0 || v > 100 : panic(fmt.Sprintf("unsupport nums %s",v)) case v <= 60: g = "D" case v <= 70: g = "C" case v <= 80: g = "B" case v <= 100: g = "A" } return g } //返回多个值 func swap(x, y string) (string, string) { return y, x } func main ( ) { fmt.Println( bounded(99), bounded(22), bounded(77), ) // 方法一 const filename = "abc.txt" content,err := ioutil.ReadFile(filename) if err != nil { fmt.Println(err) } else { fmt.Printf("%s\n",content) } //方法二 if content1,err1 := ioutil.ReadFile(filename) ; err1 != nil { fmt.Println(err1) } else { fmt.Printf("%s\n", content1) } fmt.Println( eval(3,4,"+"), eval(1,3,"*"), ) fmt.Println( grade(50), grade(77), grade(100), ) a, b := swap("Mahesh", "Kumar") fmt.Println(a, b) }