Go语言基础–函数–普通函数 – 21运维
通知: .-...

Go语言基础–函数–普通函数

GO 21运维 431浏览

在程序语言中,函数的角色基本都差不多。这里针对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语言基础–函数–普通函数