【GO语言卵细胞级别教程】04.GO函数介绍
目录:
- 【GO语言卵细胞级别教程】04.GO函数介绍
- 0.创建项目
- 1.函数的引入
- 2.注意事项
- 3.详细介绍
- 3.1 形参介绍
0.创建项目
-
创建目录
-
执行命令加载模块
cd 02.gostudy目录下
1.进入目录下 cd 02.gostudy 2.初始化模块变量 go mod init com.gdzs 3.go mod tidy 4.main.go package main import ( "fmt" "com.gdzs/goproject/src/com/nsfocus/mystudy" ) func main(){fmt.Println("main") mystudy.DemoFunc() } 5. 01.函数.go文件内容 package mystudy // 函数模块 import "fmt" func add(num1 int , num2 int) (int){return num1 + num2 } func DemoFunc(){fmt.Println("求和函数") sum := add(10, 21) fmt.Println("求和结果:", sum) } 6.执行go run main.go即可 main.go必须要指定相对路径,比如本项目的 D:\07.go\02.gostudy> go run .\goproject\src\com\nsfocus\main\main.go main 求和函数 求和结果: 31
注意
go mod tidy 的作用如下:
- 移除不再使用的依赖:它会检查项目的源代码和导入语句,并删除 go.mod 文件中未使用的依赖模块。这样可以清理项目中不再需要的依赖,减少项目的大小。
- 添加缺失的依赖:go mod tidy 会检查项目的源代码,并根据导入语句自动添加缺失的依赖模块到 go.mod 文件中。这样可以确保项目的依赖完整,避免编译错误或运行时错误。
- 更新依赖模块:它会根据 go.mod 文件中指定的版本要求,检查并更新依赖模块到可用的最新版本。这样可以确保项目使用的依赖模块是最新的,包含了最新的功能和修复
1.函数的引入
#Go函数
- 简介
函数的定义:就是用于封装重复的内容,做成一个方法,可以输入给你一些输出
作用:提高代码复用性和可读性
func 函数名 (形参列表)(返回值类型列表){ 执行语句 return + 返回值列表 }
- 举例
#Go函数定义
func add(num1 int, num2 int)(int){var sum int =0 sum = num1 + num2 return sum }
2.注意事项
#Go函数注意事项
-
函数与函数并列的关系,所以我们定义的函数不能写到main函数中,如下的写法是错误的
-
函数名的规范
- 和标识符的规范一样:驼峰命名,简单明了
- 首字母不能是数字
- 首字母大写该函数可以被本包文件以及其他包文件使用类似(java public)
- 首字母小写只能被本包文件使用,其他包文件不能使用类似(java private)
3.详细介绍
3.1 形参介绍
- 形参可以是0个、1个、多个
形参作用:接收外来的数据
- 返回类型有一个
package mystudy // 函数模块 import "fmt" // 返回值类型有一个,写返回类型 func add(num1 int , num2 int) (int){return num1 + num2 } // 返回值可以不写返回类型,如果只有一个返回类型的话可以不写括号(() func add2(num1 int, num2 int) int {var sum int = 0 sum = num1 + num2 return sum } func DemoFunc(){// fmt.Println("求和函数") // sum := add(10, 21) // fmt.Println("求和结果:", sum) sum2 := add2(19,22) fmt.Println("求和结果:", sum2) }
- 返回类型有多个
package mystudy // 函数模块 import "fmt" func add3(num1 int, num2 int)(int, int){// 值交换 return num2, num1 } func DemoFunc(){// fmt.Println("求和函数") // sum := add(10, 21) // fmt.Println("求和结果:", sum) sum2 := add2(19,22) fmt.Println("求和结果:", sum2) var num1 int = 10 var num2 int = 20 fmt.Printf("替换前:sum1:%d, sum2:%d\n", num1, num2) num2, num1 = add3(num2, num1) fmt.Printf("替换后:sum1:%d, sum2:%d", num1, num2) }
- 想要改变形参的值,需要使用指针。这里传入的是指针,所以可以直接修改得到值
// 传入指针才可以修改对应变量值 func address(num1 *int){fmt.Println(num1) *num1 = 100 }
- 返回类型不用按照顺序返回,可以使用 (xxx1 int , xxx2 int)
// 不用指定返回值的类型 func addsub(num1 int, num2 int)(sum int, sub int){sum = num1 + num2 sub = num1 - num2 // 这里不需要指定返回变量,自动生成return sum ,sub 所以直接写个return即可 return }
- 可以传入多个参数:xxx…int
// 传入多个参数 func mostParams(nums...int){for i :=0 ; i< len(nums); i++ {fmt.Println("num=",nums[i]) } } mostParams(12,2,3,233,23,32,32)
- Golang中函数不支持重载:函数名相同,形参列表不同
- 函数也是一种数据类型,可以赋值给一个变量,则该变量就是一个函数类型的变量了,通过该变量可以对函数调用。
func mostParams(nums...int){for i :=0 ; i< len(nums); i++ {fmt.Println("num=",nums[i]) } } separator := strings.Repeat("-", 10) varMostParams := mostParams fmt.Println(separator) varMostParams(32,23,88)
- 函数当作一个参数进行传递
func mostParams(nums...int){for i :=0 ; i< len(nums); i++ {fmt.Println("num=",nums[i]) } } // 函数当作一个参数传递 func funcParams(funcTest func(...int)){funcTest(12,12,12) } varMostParams := mostParams func DemoFunc(){funcParams(varMostParams) }
- 自定义数据类型
这里可以理解为别名也可以,但是类型不是func(int)而是myFunc
type myint int var num myint = 10 注意这里的myint和int不是同一个类型,这num的类型是 myint类型 ---------------------------------------------------- 一般用来 type myFunc func(int) func test(testFunc myFunc){}
-
- 3.1 形参介绍