Go语言学习笔记(7)

函数

何为函数

函数是基本的代码块,用于执行一个任务。

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

作者: Xenolies
文章标题 :Go语言学习笔记(7)
文章链接 : https://xenolies.xyz/2022/07/02/2444/
文章URL : https://xenolies.xyz/2022/07/02/2444/
本文采用 CC BY-NC-SA 4.0 协议

评论

  1. Windows Chrome 104.0.0.0
    1月前
    2022-9-01 10:35:20

    感谢分享,赞一个

    • 博主
      淄博测漏
      Android Chrome 104.0.5112.102
      1月前
      2022-9-01 17:47:47

      能帮到就太好啦٩(ˊᗜˋ*)و

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇