当前位置: 首页 > news >正文

Go语言入门心法(五): 函数


Go语言入门心法(一): 基础语法

Go语言入门心法(二): 结构体

Go语言入门心法(三): 接口

Go语言入门心法(四): 异常体系

 Go语言入门心法(五): 函数


 一: go语言函数认知 


函数相关认知升维:
函数的功能就是把相对独立的某个相同或者时类型的功能抽象处理,使之成为一个独立的实体;这样可以避免重复代码的编写;(1)函数的声明: func 函数名(参数列表) (返回参数列表) {函数体}(2)匿名函数声明: func(参数列表) (返回参数列表) {函数体}(3)函数不需要返回值时,省略返回值参数的列表;函数参数的简写: (3.1)如果函数的参数列表的类型相同时,可以省略前面参数的类型,只写后一个参数的类型;函数返回值简写: (3.2)如果函数参数的返回值都是同一类型,在返回值列表中可将返回参数省略(4)匿名函数声明同时赋值func(形参列表)(返回值列表){函数体}(实参列表)

package mainimport "fmt"/*
函数相关认知升维:函数的功能就是把相对独立的某个相同或者时类型的功能抽象处理,使之成为一个独立的实体;这样可以避免重复代码的编写;(1)函数的声明: func 函数名(参数列表) (返回参数列表) {函数体}(2)匿名函数声明: func(参数列表) (返回参数列表) {函数体}(3)函数不需要返回值时,省略返回值参数的列表;函数参数的简写: (3.1)如果函数的参数列表的类型相同时,可以省略前面参数的类型,只写后一个参数的类型;函数返回值简写: (3.2)如果函数参数的返回值都是同一类型,在返回值列表中可将返回参数省略(4)匿名函数声明同时赋值func(形参列表)(返回值列表){函数体}(实参列表)
*/
func main() {// 函数赋值给变量var a = add// 调用函数println("调用add函数: ", a(12, 22))// 使用函数作为类型声明一个函数变量var b func(t, m int) (sub int)println("函数b = ", b)// 给函数变量b 赋值同类型的函数b = subtractionprintln("使用函数声明函数变量并调用函数: ", b(500, 200))print("调用无返回值的函数: ")printStr("无参函数")println()println("声明同时调用匿名函数")println()println()println("=========================声明同时调用匿名函数=========================")func(data string) {println("声明匿名函数的同时调用匿名函数: ", data)}("匿名函数的实参")println()println("========================先声明在调用匿名函数==========================")f1 := func(a, b int) (t int) {t = a * breturn t}println("调用匿名函数[使用先声明后调用的方方式]: ", f1(5, 6))}// 定义add函数
func add(x int, y int) (sum int) {sum = x + yreturn sum
}// 定义subtraction函数,同类型参数,省略前面变量的类型
func subtraction(a, b int) (sub int) {if a > b {sub = a - b} else {sub = b - a}return sub
}// 无返回值的函数省略返回值列表
func printStr(content string) {fmt.Printf("传入的参数 %v", content)
}

运行效果:


GOROOT=D:\program_file_worker\go1.20 #gosetup
GOPATH=D:\program_file_worker\go1.20\bin;C:\Users\Administrator\go #gosetup
D:\program_file_worker\go1.20\bin\go.exe build -o C:\Users\Administrator\AppData\Local\Temp\GoLand\___go_build_OOPFunctionToGrammar_go.exe D:\program_file\go_workspace\org.jd.data\funcation\OOPFunctionToGrammar.go #gosetup
C:\Users\Administrator\AppData\Local\Temp\GoLand\___go_build_OOPFunctionToGrammar_go.exe
调用add函数:  34
函数b =  0x0
使用函数声明函数变量并调用函数:  300
调用无返回值的函数: 传入的参数 无参函数
声明同时调用匿名函数


=========================声明同时调用匿名函数=========================
声明匿名函数的同时调用匿名函数:  匿名函数的实参

========================先声明在调用匿名函数==========================
调用匿名函数[使用先声明后调用的方方式]:  30

Process finished with the exit code 0

二: go语言可变参数与函数变量


函数变量||函数可变参数:在go语言中,函数是一种类型,可以将其保存在变量中函数变量的声明如下:var 变量名称 func(形成列表)(返回值列表)

       func 函数名(实参列表,...参数类型)(返回值类别){函数体 }


package mainimport "fmt"/*
函数变量||函数可变参数:在go语言中,函数是一种类型,可以将其保存在变量中函数变量的声明如下:var 变量名称 func(形成列表)(返回值列表)
*/
func main() {println("========================go语言中函数的声明======================")a := 100b := 20var f1 func(x int, y int) (sum int, sub int)f1 = addSubsum, sub := f1(a, b)fmt.Println(a, "+", b, sum)fmt.Println(a, "-", b, sub)println("调用返回默认值的函数: ")e, f, g := defaultValue()fmt.Printf("调用函数返回默认值分别为: %v ,%v ,%v ", e, f, g)h, m, n := defaultValueInit()println()fmt.Printf("调用函数返回默认值分别为: %v ,%v ,%v \n", h, m, n)println()println()fmt.Println("1+2+3+4+5+6+7+8+9+10 = ", addSum(1, 2, 3, 4, 5, 6, 7, 8, 9, 10))println("===========================来看看go语言内置的可变参数的函数===========================")println(`看看println函数的源代码:func println(args ...Type)看看fmt.printf函数的源代码:func Printf(format string, a ...any) (n int, err error) {return Fprintf(os.Stdout, format, a...)}`)}// 定义函数是给出默认的返回值
func defaultValue() (a int, b string, c bool) {return
}// 定义函数是给出默认的返回值
func defaultValueInit() (a string, b string, c bool) {return "1", "", false
}func addSub(x int, y int) (sum int, sub int) {sum = x + ysub = x - yreturn sum, sub
}// 定义可变参数函数
func addSum(slice ...int) int {sum := 0for _, value := range slice {sum = sum + value}return sum
}

运行效果:


GOROOT=D:\program_file_worker\go1.20 #gosetup
GOPATH=D:\program_file_worker\go1.20\bin;C:\Users\Administrator\go #gosetup
D:\program_file_worker\go1.20\bin\go.exe build -o C:\Users\Administrator\AppData\Local\Temp\GoLand\___go_build_OOPFunctionToParameterUserMultParams_go.exe D:\program_file\go_workspace\org.jd.data\funcation\OOPFunctionToParameterUserMultParams.go #gosetup
C:\Users\Administrator\AppData\Local\Temp\GoLand\___go_build_OOPFunctionToParameterUserMultParams_go.exe
========================go语言中函数的声明======================
100 + 20 120
100 - 20 80
调用返回默认值的函数:
调用函数返回默认值分别为: 0 , ,false
调用函数返回默认值分别为: 1 , ,false


1+2+3+4+5+6+7+8+9+10 =  55
===========================来看看go语言内置的可变参数的函数===========================


         看看println函数的源代码:
         func println(args ...Type)
         看看fmt.printf函数的源代码:

         func Printf(format string, a ...any) (n int, err error) {
                  return Fprintf(os.Stdout, format, a...)
         }


Process finished with the exit code 0
 

三: 函数闭包认知


四: 函数延迟执行|内置函数


忙着去耍帅,后期补上..........

http://www.lryc.cn/news/196540.html

相关文章:

  • gitignore文件的语法规则
  • vscode提示扩展主机在过去5分钟内意外终止了3次,解决方法
  • 【算法挨揍日记】day16——525. 连续数组、1314. 矩阵区域和
  • k8s-13 存储之secret
  • 什么是高阶成分(HOC)
  • 深度学习硬件配置推荐
  • 数仓建设(一)
  • Springboot整合taos时序数据库TDengine
  • Epoch、批量大小、迭代次数
  • qt-C++笔记之清空QVBoxLayout中的QCheckBox
  • pc微信39223部分算法call偏移
  • 尚硅谷Flink(三)时间、窗口
  • MPLS基础
  • react+antd+Table实现表格初始化勾选某条数据,分页切换保留上一页勾选的数据
  • Linux shell编程学习笔记13:文件测试运算
  • element ui this.$msgbox 自定义组件
  • 尚硅谷Flink(四)处理函数
  • AXURE RP EXTENSION For Chrome 安装
  • 24、Flink 的table api与sql之Catalogs(java api操作视图)-3
  • 【CNN-GRU预测】基于卷积神经网络-门控循环单元的单维时间序列预测研究(Matlab代码实现)
  • 计算机毕业设计--基于SSM+Vue的物流管理系统的设计与实现
  • GPT4 Plugins 插件 WebPilot 生成抖音文案
  • 通过核密度分析工具建模,基于arcgis js api 4.27 加载gp服务
  • 【vue2高德地图api】02-npm引入插件,在页面中展示效果
  • ai智能语音电销机器人怎么选?
  • NumPy基础及取值操作
  • vue webpack/vite的区别
  • 多线程下的单例设计模式(新手必看!!!)
  • JDK 21的新特性总结和分析
  • 【VR】【Unity】白马VR课堂系列-VR开发核心基础03-项目准备-VR项目设置