在程序语言中,函数的角色基本都差不多。这里针对go函数相关的东西做一下笔记。
Go语言里面拥三种类型的函数:
(1)普通函数
(2)匿名函数
(3)方法
普通函数记录。
1,函数声明
普通函数需要声明以后才能调用。
go语言中的采用关键字func进行函数定义,包含func 函数名 参数列表 返回参数列表以及函数体。
格式:
func 函数名(形式参数列表)(返回值列表){ 函数体 }
说明:
(1)函数名由字母、数字和下划线,函数名不能由数字开头。
(2)同一个包内,函数不能重名。
(3)参数列表:一个参数由变量名和变量类型组成。 其中根据返回值类型不同,可以进行省略,一般不建议省略,影响可读性。 另外多个参数,可用逗号“,“进行分割。
(4)返回参数列表。函数返回值有两种: 一种是返回值类型,一种是有命名返回值。函数在声明中有返回值时,必须在函数体中使用return 语句提供返回值类列表。
(5)参数类型可以简写,注意场景。函数的写法多种多样,为了增加可读性,还是建议按照标准写法以及添加注释方式。
案例:
package main import ( "fmt" ) func main(){ sum, cha := GetData(2,3) fmt.Println(sum,cha) } //定义一个普通函数,才有两个参数列表和两个返回参数列表 func GetData(a,b int)(sum int,cha int){ sum = a + b cha = a - b return sum,cha }
输出结果:
5 -1
函数的写法多样,比如上边的这个函数:
//定义一个普通函数,才有两个参数列表和两个返回参数列表 func GetData(a,b int)(int, int){ return a +b ,a-b }
2,函数返回值。
Go语言函数支持多返回值。
函数返回值有两种: 一种是返回值类型,一种是有命名返回值(即返回参数里边定义有变量和类型)。函数在声明中有返回值时,必须在函数体中使用return 语句提供返回值类列表。
返回值类型:
package main import "fmt" func main(){ a,b := PrintData() fmt.Println(a,b) } func PrintData()(int,int){ return 1,2 }
命名返回值:
func main(){ sum, cha := GetData(2,3) fmt.Println(sum,cha) } //定义一个普通函数,才有两个参数列表和两个返回参数列表 func GetData(a,b int)(sum int,cha int){ sum = a + b cha = a - b return sum,cha }
命名返回值,一般是根据参数列表里边的参数进行数据处理后,通过返回参数列表的变量进行返回,获取需要的数据处理结果。
3,函数调用。
函数执行调用有两种,一种是直接执行函数获取某种结果,一种是通过传参赋值到返回变量列表。
(1)直接调用函数
package main import "fmt" func main(){ PrintLog() } func PrintLog(){ fmt.Println("error,please check") }
输出结果:
error,please check
(2)返回变量列表方式
格式:
返回值变量列表 = 函数名(参数列表)
案例1:
func main(){ sum, cha := GetData(2,3) fmt.Println(sum,cha) } //定义一个普通函数,才有两个参数列表和两个返回参数列表 func GetData(a,b int)(sum int,cha int){ sum = a + b cha = a - b return sum,cha }
案例2:
package main import "fmt" //定义换算常量 const ( SecondPerMinute = 60 SecondPerHour = SecondPerMinute *60 SecondPerDay = SecondPerHour *24 ) //定义时间转换函数,返回天,小时,分钟 三个变量 func resolveTime(second int) (day int,hour int,minute int) { day = second / SecondPerDay hour = second / SecondPerHour minute = second / SecondPerMinute return day,hour,minute //return } func main(){ fmt.Println(resolveTime(10000)) day,_,_ := resolveTime(10000) _,hour,_ := resolveTime(10000) _,_,minute := resolveTime(10000) fmt.Println(day,hour,minute) }
输出结果:
0 2 166
0 2 166
4,函数变量
函数也是go语言中的一种数据类型,可以将其赋值到变量中。
把函数作为返回值保存到函数变量里边。 函数变量经常被用于实现 回调函数、闭包。
案例:
package main import "fmt" func PrintString(){ fmt.Println("hello go") } func main(){ var f func() f = PrintString f() }
执行结果:
hello go
转载请注明:21运维 » Go语言基础–函数–普通函数