golang 学习笔记
函数定义:定参函数、不定参函数
//func 函数名(参数列表)(返回值列表){
//代码体
//}
// 定参函数
func add(s1 int, s2 int) {
sum := s1 + s2
fmt.Println(sum)
}
//...不定参 在函数调用时可以传递不定量(0-n)的参数
//不定参使用数据格式为切片
func sum(arr ...int) {
//arr是一个数据的集合
//fmt.Println(arr)
//计算字符串个数
//len("你好")
//计算数据集合的个数
//count := len(arr)
//fmt.Println(count)
sum := 0
//_匿名变量 如果数据的值不需要接收 可以通过匿名变量来接收数据
// for i,v := range arr {
for _, v := range arr {
//fmt.Println(i, v)
sum += v
}
fmt.Println(sum)
}
// 函数返回值
//func 函数名(函数参数列表)(函数返回值类型)
func test4(a int, b int) (sum int) {
sum = a + b
//sum := a + b
//return 表示函数的结束 如果函数有返回值return 可以将返回值返回
return
}
//多个返回值
func test5(a int, b int) (sum int, sub int) {
sum = a + b
sub = a - b
return
}
// 匿名函数
//如果定义匿名函数后在{}后面如果有()表示函数调用
f := func(a int, b int) int {
return a + b
}
v := f(10, 20)
fmt.Printf("%T\n", f)
fmt.Println(v)
// 递归函数
//递归函数 函数调用函数本身
//死递归
func demo4(n int) {
//在函数中遇到return 表示函数的结束
if n == 0 {
return
}
demo4(n - 1)
fmt.Println(n)
}
函数使用
func main() {
a := 10
b := 20
//函数有多个返回值 要一一对应接收数据
sum, sub := test5(a, b)
fmt.Println(sum, sub)
}
函数作用域
//在函数外部定义的变量 成为全局变量
//作用域是在项目中整个文件去使用
//定义的全局变量名不能和其他文件中的全局变量重名
//全局变量名可以和局部变量名重名
//全局变量储存在内存的数据区
//如果全局变量定义时有值 存储在初始化数据区 没有值存储在为初始化数据区
//变量先定义后使用 在函数内部变量名是唯一的
//在函数内部定义的变量 成为局部变量
//局部变量的作用域在函数内部
//在go语言中会采用就进原则 如果在函数内部定义局部变量 和全局变量名重名 会使用局部变量
//修改全局变量的值
//如果全局变量的值修改 会影响其他位置使用全局变量的值