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-11-15SendGrid 的 Go 客户端库怎么实现同时向多个邮箱发送邮件?-icode9专业技术文章分享
- 2024-11-15SendGrid 的 Go 客户端库怎么设置header 和 标签tag 呢?-icode9专业技术文章分享
- 2024-11-12Cargo deny安装指路
- 2024-11-02MongoDB项目实战:从入门到初级应用
- 2024-11-01随时随地一键转录,Google Cloud 新模型 Chirp 2 让语音识别更上一层楼
- 2024-10-25Google Cloud动手实验详解:如何在Cloud Run上开发无服务器应用
- 2024-10-24AI ?先驱齐聚 BAAI 2024,发布大规模语言、多模态、具身、生物计算以及 FlagOpen 2.0 等 AI 模型创新成果。
- 2024-10-20goland工具下,如修改一个项目的标准库SDK的版本-icode9专业技术文章分享
- 2024-10-17Go学习:初学者的简单教程
- 2024-10-17Go学习:新手入门完全指南