函数
何为函数
函数是基本的代码块,用于执行一个任务。
Go 语言最少有个 main() 函数。
你可以通过函数来划分不同功能,逻辑上每个函数执行的是指定的任务。
函数声明告诉了编译器函数的名称,返回类型,和参数。
函数的定义和调用
函数定义
Go语言定义函数的语法:
func function_name( [parameter list] ) [return_types] {
函数体
[return return_Numbers]
}
func
:定义函数的关键字
function_name
: 函数名
parameter list
: 参数列表,需要传入的参数和参数类型,根据需要选择可以不设置。
return_types
: 返回值类型,返回一系列的值,根据需要选择可以不设置。
函数体:函数定义的代码集合。
func PrintHello() { //打印Hello的函数
var String = "Hello"
fmt.Println(String)
}
函数调用
当创建函数时,你定义了函数需要做什么,通过调用该函数来执行指定任务。
package main
import "fmt"
func main() {
PrintHello() //调用PrintHello函数
fmt.Println(PrintHelloWorld()) //调用PrintHelloWorld函数
fmt.Println(Add(10, 10)) //调用求和函数
}
func PrintHello() { //PrinrHello函数,无参,无返回值
var String = "Hello"
fmt.Println(String)
}
func PrintHelloWorld() string { //PrintHelloWorld函数,无参,有返回值
var String = "Hello,World!"
return String
}
func Add(X int, Y int) int { //求和函数,有参,有返回值
Res := X + Y
return Res
}
运行结果:
函数类型
使用Type关键字可以定义函数类型。
在Go语言中,type可以定义任何自定义的类型。
package main
import "fmt"
func main() {
type T1 func(int, int) int //使用type关键字,定义T1类型
var F T1 = Add //声明T1类型的变量F ,将Add函数赋给F
f1 := F(1, 4)
fmt.Println(f1)
var F2 T1 = subtract
f2 := F2(10, 40)
fmt.Println(f2)
fmt.Println(f1 + f2)
}
func Add(X int, Y int) int { //Add函数
Res := X + Y
return Res
}
func subtract(X int, Y int) int { //subtract函数
Res := X - Y
return Res
}
输出结果:
高阶函数
函数作为参数
package main
import "fmt"
func main() {
PrintHello("Sam", SayHello)
}
func SayHello(name string) string {
var Hello string = name + " Hello"
fmt.Println("func SayHello: ", Hello)
return Hello
}
func PrintHello(name string, f func(string2 string) string) {
fmt.Println("func PrintHello: ", name, f(name))
}
输出结果:
函数作为返回值
package main
import (
"fmt"
"strconv"
)
func main() {
fmt.Println(Add(10, 20))
}
func Add(x int, y int) string {
var Res = x + y
return ToString(Res)
}
func ToString(z int) string {
var Res = strconv.Itoa(z) //使用 strconv.Itoa()将整型数字转为字符串数字
return Res
}
其他
strconv.Itoa() 和 string()的区别
string()是直接整数类型的数字转为ASCII码值等于该整形数字的字符。
而strconv.Itoa() 是转换成对应的字符串类型的数字。
package main
import (
"fmt"
"strconv"
)
func main() {
var Number = 40
fmt.Println(Number)
fmt.Printf("%T\n", Number)
fmt.Println("------------------")
fmt.Println(string(Number))
fmt.Printf("%T\n", string(Number))
fmt.Println("------------------")
fmt.Println(strconv.Itoa(Number))
fmt.Printf("%T\n", strconv.Itoa(Number))
}
输出结果:
匿名函数
Go语言中的函数无法实现函数的嵌套,但是可以通过匿名函数来实现相似的效果。
匿名函数效果类似Python中的lamda
格式:
func(参数列表) 返回值 {
函数体
}
package main
import "fmt"
func main() {
Add := func(X int, Y int) int { //匿名函数
return X + Y
}
A := Add(1, 2) //调用匿名函数
fmt.Println("var A =", A) //输出
}
输出结果:
var A = 3
感谢分享,赞一个
能帮到就太好啦٩(ˊᗜˋ*)و