Go语言学习——函数进阶、变量作用域、函数类型与变量
函数
函数的定义
基本格式
参数的格式
有参数的函数
参数类型简写
可变参数
返回值的格式
有返回值
多返回值
命名返回值
变量作用域
- 全局作用域
- 函数作用域
- 先在函数内部找变量,找不到往外层找
- 函数内部的变量,外部是访问不到的
- 代码块作用域
高阶函数
函数也是一种类型,它可以作为参数也可以作为返回值
函数进阶
变量作用域
全局变量
全局变量是定义在函数外部的变量
在函数中可以访问到全局变量
局部变量
函数内定义的变量无法在该函数外使用
语句块定义的变量(if条件判断、for循环、switch语句)
全局作用域 函数内部作用域 语句块作用域
package main
import "fmt"
// 变量的作用域
var x = 100 // 定义一个全局变量
// 定义一个函数
func f1() {
// x := 10
name := "理想"
// 函数中查找变量的顺序
// 1. 先在函数内部查找
// 2. 找不到就往函数的外面查找,一直找到全局
fmt.Println(x, name)
}
func main(){
f1()
// fmt.Println(name) // 函数内部定义的变量只能在该函数内部使用
// 语句块作用域
if i := 10; i < 18 {
fmt.Println("上学啦")
}
// fmt.Println(i)
for j := 0; j < 5; j++ {
fmt.Println(j)
}
// fmt.Println(j)
}
函数类型与变量
定义函数类型
type关键字定义一个函数类型:
type calculation func(int, int) int
定义了一个calculation函数类型,它接收两个int类型的参数并且返回一个int类型的返回值
package main
import (
"fmt"
)
// 函数类型
func f1() {
fmt.Println("Hello world")
}
func f2()int {
return 10
}
func f4(x, y int) int {
return x + y
}
// 函数也可以作为参数的类型
func f3(x func() int) {
ret := x()
fmt.Println(ret)
}
func ff(a, b int) int {
return a + b
}
// 函数还可以作为返回值
func f5(x func() int) func(int, int) int {
return ff
}
func main(){
a := f1
fmt.Printf("%T\n", a) // func()
b := f2
fmt.Printf("%T\n", b) // func() int
f3(f2)
f3(b)
fmt.Printf("%T\n", f4) // func(int, int) int
// f3(f4)
f7 := f5(f2)
fmt.Printf("%T\n", f7)
}
本文来自博客园,作者:寻月隐君,转载请注明原文链接:https://www.cnblogs.com/QiaoPengjun/p/16260330.html