当前位置: 首页 > 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
 

三: 函数闭包认知


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


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

相关文章:

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

Go语言入门心法(一): 基础语法 Go语言入门心法(二): 结构体 Go语言入门心法(三): 接口 Go语言入门心法(四): 异常体系 Go语言入门心法(五): 函数 一: go语言函数认知 函数相关认知升维:函数的功能就是把相对独立的某个相同或者时类型的功能抽象处理,使之成为一个…...

gitignore文件的语法规则

行注释:以"#"符号开头的行表示注释,Git会忽略这些行。空行:空行会被忽略。文件和目录规则: 可以使用通配符来匹配文件和目录。常用的通配符有: “*”:匹配0个或多个字符。“?”:匹配…...

vscode提示扩展主机在过去5分钟内意外终止了3次,解决方法

参考链接: https://code.visualstudio.com/blogs/2021/02/16/extension-bisect https://code.visualstudio.com/docs/setup/uninstall#_clean-uninstall 使用vscode打开jupyter notebook记事本时,窗口右下角提示扩展主机在过去5分钟内意外终止了3次 而…...

【算法挨揍日记】day16——525. 连续数组、1314. 矩阵区域和

525. 连续数组 525. 连续数组 题目描述: 给定一个二进制数组 nums , 找到含有相同数量的 0 和 1 的最长连续子数组,并返回该子数组的长度。 解题思路: 本题的元素只有0和1,根据题目意思,我们可以把题目看成找一段最…...

k8s-13 存储之secret

Secret 对象类型用来保存敏感信息,例如密码、OAuth 令牌和 ssh key。 敏感信息放在 secret 中比放在 Pod 的定义或者容器镜像中来说更加安全和灵活 。 Pod 可以用两种方式使用 secret:作为 volume 中的文件被挂载到 pod 中的一个或者多个容器里 当 kubelet 为 pod 拉…...

什么是高阶成分(HOC)

高阶组件(Higher-Order Component,HOC)是一种在React中用于组件复用和逻辑抽象的设计模式。它本质上是一个函数,接受一个组件作为参数,并返回一个新的组件。 1. HOC的作用: HOC允许我们在不修改原始组件的…...

深度学习硬件配置推荐

目录 1. 基础推荐2. GPU显存与内存是一个1:4的配比?3. deep learning 入门和kaggle比赛4. 有些 Kaggle 比赛数据集很大,可能需要更多的 GPU 显存,请推荐显存4. GDDR6和HBM25. HDD 或 SATA SSD1. 基础推荐 假设您作为一个深度学习入门学者的需求,以下是一份推荐的电脑硬件配…...

数仓建设(一)

想了想,我们的数仓的建设是基于大数据平台进行的,中间也经历了比较曲折的过程。 每个行业都有自身的业务区别,不过很多还是比较相通的。 本文将全面讲解数仓建设规范,从数据模型规范,到数仓公共规范,数仓各…...

Springboot整合taos时序数据库TDengine

1.首先安装TDengine服务端在linux上 TDengine多种安装包的安装和卸载 - TDengine | 涛思数据安装过程直接去官网看,非常详细简单 2.出现的问题 windows连接 invalid app version 版本不对应 版本不对应的问题,需要在linux上安装的版本和windows client版本一致,不然w…...

Epoch、批量大小、迭代次数

梯度下降 它是 机器学习中使用的迭代 优化算法,用于找到最佳结果(曲线的最小值)。 坡度 是指 斜坡的倾斜度或倾斜度 梯度下降有一个称为 学习率的参数。 正如您在上图(左)中看到的,最初步长较大&#…...

qt-C++笔记之清空QVBoxLayout中的QCheckBox

qt-C笔记之清空QVBoxLayout中的QCheckBox QVBoxLayout 和 QCheckBox 是两个类,都是 PyQt/PySide 中用于创建图形用户界面 (GUI) 的工具。它们通常与 Qt 库一起使用,Qt 是一个流行的跨平台 GUI 库,可以用于创建桌面应用程序。 QVBoxLayout: Q…...

pc微信39223部分算法call偏移

WechatWin.dll 基址:78FD0000 MD5_Init_call 7AF48C80 | 56 | push esi | 7AF48C81 | 8B7424 08 | mov esi,dword ptr ss:[esp0x8] | 7AF48C85 | 6A 4C | push 0x4C …...

尚硅谷Flink(三)时间、窗口

1 🎰🎲🕹️ 🎰时间、窗口 🎲窗口 🕹️是啥 Flink 是一种流式计算引擎,主要是来处理无界数据流的,数据源源不断、无穷无尽。想要更加方便高效地处理无界流,一种方式就…...

MPLS基础

1. MPLS原理与配置 MPLS基础 (1)MPLS概念 MPLS位于TCP/IP协议栈中的数据链路层和网络层之间,可以向所有网络层提供服务。 通过在数据链路层和网络层之间增加额外的MPLS头部,基于MPLS头部实现数据快速转发。 本课程仅介绍MPLS在…...

react+antd+Table实现表格初始化勾选某条数据,分页切换保留上一页勾选的数据

加上rowKey这个属性 <Table rowKey{record > record.id} // 加上rowKey这个属性rowSelection{rowSelection}columns{columns}dataSource{tableList}pagination{paginationProps} />...

Linux shell编程学习笔记13:文件测试运算

Linux Shell 脚本编程和其他编程语言一样&#xff0c;支持算数、关系、布尔、逻辑、字符串、文件测试等多种运算。前面几节我们依次研究了 Linux shell编程 中的 字符串运算、算术运算、关系运算、布尔运算 和 逻辑运算&#xff0c;今天我们来研究 Linux shell编程中的文件测…...

element ui this.$msgbox 自定义组件

this.$msgbox({title: "选择", message: (<com1figs{this.figs} on-selected{this.new_selected}></com1>),showCancelButton: false,showConfirmButton: false,}); 运行报错 Syntax Error: Unexpected token (89:20) 参考&#xff1a; https://gith…...

尚硅谷Flink(四)处理函数

目录 &#x1f98d;处理函数 &#x1f412;基本处理函数 &#x1f412;按键分区处理函数&#xff08;KeyedProcessFunction&#xff09; &#x1f435;定时器&#xff08;Timer&#xff09;和定时服务&#xff08;TimerService&#xff09; // 1、事件时间的案例 // 2、处理…...

AXURE RP EXTENSION For Chrome 安装

在浏览器上输入地址&#xff1a;chrome://extensions/ 打开图片中这个选项&#xff0c;至此你就能通过index.html访问...

24、Flink 的table api与sql之Catalogs(java api操作视图)-3

Flink 系列文章 1、Flink 部署、概念介绍、source、transformation、sink使用示例、四大基石介绍和示例等系列综合文章链接 13、Flink 的table api与sql的基本概念、通用api介绍及入门示例 14、Flink 的table api与sql之数据类型: 内置数据类型以及它们的属性 15、Flink 的ta…...

大话软工笔记—需求分析概述

需求分析&#xff0c;就是要对需求调研收集到的资料信息逐个地进行拆分、研究&#xff0c;从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要&#xff0c;后续设计的依据主要来自于需求分析的成果&#xff0c;包括: 项目的目的…...

反向工程与模型迁移:打造未来商品详情API的可持续创新体系

在电商行业蓬勃发展的当下&#xff0c;商品详情API作为连接电商平台与开发者、商家及用户的关键纽带&#xff0c;其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息&#xff08;如名称、价格、库存等&#xff09;的获取与展示&#xff0c;已难以满足市场对个性化、智能…...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M&#xff1a;百万&#xff08;Million&#xff09; B&#xff1a;十亿&#xff08;Billion&#xff09; 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的&#xff0c;但是一个参数所表示多少字节不一定&#xff0c;需要看这个参数以什么…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同&#xff0c;结合所安装的tensorflow的目录结构修改from语句即可。 原语句&#xff1a; from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后&#xff1a; from tensorflow.python.keras.lay…...

React---day11

14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store&#xff1a; 我们在使用异步的时候理应是要使用中间件的&#xff0c;但是configureStore 已经自动集成了 redux-thunk&#xff0c;注意action里面要返回函数 import { configureS…...

go 里面的指针

指针 在 Go 中&#xff0c;指针&#xff08;pointer&#xff09;是一个变量的内存地址&#xff0c;就像 C 语言那样&#xff1a; a : 10 p : &a // p 是一个指向 a 的指针 fmt.Println(*p) // 输出 10&#xff0c;通过指针解引用• &a 表示获取变量 a 的地址 p 表示…...

spring Security对RBAC及其ABAC的支持使用

RBAC (基于角色的访问控制) RBAC (Role-Based Access Control) 是 Spring Security 中最常用的权限模型&#xff0c;它将权限分配给角色&#xff0c;再将角色分配给用户。 RBAC 核心实现 1. 数据库设计 users roles permissions ------- ------…...

DeepSeek越强,Kimi越慌?

被DeepSeek吊打的Kimi&#xff0c;还有多少人在用&#xff1f; 去年&#xff0c;月之暗面创始人杨植麟别提有多风光了。90后清华学霸&#xff0c;国产大模型六小虎之一&#xff0c;手握十几亿美金的融资。旗下的AI助手Kimi烧钱如流水&#xff0c;单月光是投流就花费2个亿。 疯…...