函数
1. 格式
func funcName(形参1 type[, 形参2 type...]) [([[返回变量1] type[, [返回变量2] type...]])] {
[return [返回变量1[, 返回变量2...]]]
}
a. 如果形参类型都一样,可以这样写: 形参1, 形参2 type, 同时返回变量也一样
b. 如果只有一个返回值或者无返回值, 可以去掉对应的()
c. 如果返回有返回值,该函数中最外层要有return语句
d. 返回语句(), 返回变量名可以省略
e. []表示可省略
f. 不支持默认参数
example code list
2. 调用其他包中的函数
先引入包,再调用:
包名.函数()
go语言中规则:小写字母开头的函数(变量/类型)只在本包中可见,大写字母开关的可以在其他包中被调用
如果把数字转换为字符串,用strconv.itoa() b := 66 strconv.Itoa(b) = "66"
如果用string(b)结果为 "B"
example code list
1. 格式
func funcName(形参1 type[, 形参2 type...]) [([[返回变量1] type[, [返回变量2] type...]])] {
[return [返回变量1[, 返回变量2...]]]
}
a. 如果形参类型都一样,可以这样写: 形参1, 形参2 type, 同时返回变量也一样
b. 如果只有一个返回值或者无返回值, 可以去掉对应的()
c. 如果返回有返回值,该函数中最外层要有return语句
d. 返回语句(), 返回变量名可以省略
e. []表示可省略
f. 不支持默认参数
example code list
import "fmt"
func main() {
//1. 函数的调用,多个返回值
var (
a = 10
b = 100
)
a2, b2 := add(a, b)
fmt.Println("a2, b2 = ", a2, ", ", b2) // a2, b2 = 20, 200
//fmt.Println("a2, b2 = ", add(a, b)) //compile error: multiple-value add() in single-value context
}
func add(n1, n2 int) (res1, res2 int) {
res1, res2 = n1*2, n2*2//不需要用 ":=" 声明, 如果写为res1, res2 := n1*2, n2*2会出错
return
}
/*
//下面的add也可以为上面的写法
func add(n1, n2 int) (res1, res2 int) {
return n1*2, n2*2
}
*/
2. 调用其他包中的函数
先引入包,再调用:
包名.函数()
go语言中规则:小写字母开头的函数(变量/类型)只在本包中可见,大写字母开关的可以在其他包中被调用
如果把数字转换为字符串,用strconv.itoa() b := 66 strconv.Itoa(b) = "66"
如果用string(b)结果为 "B"
example code list
import (
"fmt"
"math"
"strconv"
)
func main() {
//2. 调用 math, strconv 包中的函数
fmt.Printf("sqrt(%d) = %.2f\n", b, math.Sqrt(float64(b))) //sqrt(100) = 10.00
c := 67
fmt.Println("string(67) = ", string(c)) //string(67) = C
fmt.Println("strconv.Itoa(67) = ", strconv.Itoa(c)) //strconv.Itoa(6