Go语言学习——函数进阶、变量作用域、函数类型与变量
2022/5/11 23:13:43
本文主要是介绍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) }
这篇关于Go语言学习——函数进阶、变量作用域、函数类型与变量的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-24MongoDB资料:新手入门完全指南
- 2024-12-20go-zero 框架的 RPC 服务 启动start和停止 底层是怎么实现的?-icode9专业技术文章分享
- 2024-12-19Go-Zero 框架的 RPC 服务启动和停止的基本机制和过程是怎么实现的?-icode9专业技术文章分享
- 2024-12-18怎么在golang中使用gRPC测试mock数据?-icode9专业技术文章分享
- 2024-12-15掌握PageRank算法核心!你离Google优化高手只差一步!
- 2024-12-15GORM 中的标签 gorm:"index"是什么?-icode9专业技术文章分享
- 2024-12-11怎么在 Go 语言中获取 Open vSwitch (OVS) 的桥接信息(Bridge)?-icode9专业技术文章分享
- 2024-12-11怎么用Go 语言的库来与 Open vSwitch 进行交互?-icode9专业技术文章分享
- 2024-12-11怎么在 go-zero 项目中发送阿里云短信?-icode9专业技术文章分享
- 2024-12-11怎么使用阿里云 Go SDK (alibaba-cloud-sdk-go) 发送短信?-icode9专业技术文章分享