Go 语言函数

Arch Linux 命令大全,值得收藏! Arch Linux 是一款轻量级、高度可定制的 Linux 发行版,以其简洁和强大的特性深受高级用户喜爱。但对于新手来说,完全掌握 Arch Linux 的操作需要时间和实践。本文将为您详细介绍常用的 Arch Linux 命令,涵盖系统管理、文件操作、用户管理、软件安装与管理、网络配置和磁盘管理等内容,帮助您更高效地使用 Arch Linux。 阅读详情

在 Go 语言中,函数是一种基本的代码组织方式。函数可以将一段代码封装成一个可重用的单元,并通过参数和返回值与其他代码进行交互。在本篇技术博客中,我们将介绍 Go 语言中函数的相关知识,包括函数的定义、调用、参数、返回值、匿名函数和变参函数等。

函数的定义

在 Go 语言中,函数的定义使用关键字 func,并遵循以下格式:

func 函数名(参数列表) 返回值列表 {
    函数体
}

其中,参数列表和返回值列表都可以为空。如果函数有多个返回值,则需要使用括号将返回值列表包含起来。

例如,下面是一个简单的函数定义,用于计算两个整数的和:

func add(a, b int) int {
    return a + b
}

在上面的示例中,函数名为 add,参数列表为 a, b int,表示函数接受两个整数类型的参数,返回值列表为 int,表示函数返回一个整数类型的值。

函数的调用

在 Go 语言中,函数的调用使用函数名和参数列表组成的表达式,例如:

c := add(1, 2)

在上面的示例中,add(1, 2) 表示调用 add 函数,并传入参数 1 和 2。函数返回的结果会被赋值给变量 c。

函数的参数

在 Go 语言中,函数的参数可以是任何类型的值,包括基本类型、结构体、数组、切片、映射、函数等。函数的参数可以通过值传递或引用传递的方式进行传递。

值传递

值传递是指将参数值复制一份,然后将复制的值传递给函数。在函数内部修改参数的值不会影响原始值。例如:

func swap(a, b int) {
    tmp := a
    a = b
    b = tmp
}

x, y := 1, 2
swap(x, y)
fmt.Println(x, y) // 输出 1, 2

在上面的示例中,swap 函数接受两个整数类型的参数,交换它们的值。但由于参数是值传递的,所以在函数内部修改参数的值并不会影响原始值。

引用传递

引用传递是指将参数的地址传递给函数,函数内部可以通过地址访问和修改参数的值。在 Go 语言中,指针是用于表示地址的类型。例如:

func swap(a, b *int) {
    tmp := *a
    *a = *b
    *b = tmp
}

x, y := 1, 2
swap(&x, &y)
fmt.Println(x, y) // 输出 2, 1

在上面的示例中,swap 函数接受两个整数类型的指针参数,交换它们所指向的值。通过将变量的地址传递给函数,可以在函数内部修改变量的值。

函数的返回值

在 Go 语言中,函数可以返回一个或多个值。如果函数有多个返回值,则需要使用括号将返回值列表包含起来。例如:

func divmod(a, b int) (int, int) {
    return a / b, a % b
}

x, y := divmod(10, 3)
fmt.Println(x, y) // 输出 3, 1

在上面的示例中,divmod 函数接受两个整数类型的参数,返回它们的商和余数。函数返回的两个值可以使用多重赋值的方式进行接收。

匿名函数

在 Go 语言中,函数可以是匿名的。匿名函数是一种没有函数名的函数,可以直接定义和调用。匿名函数通常用于实现闭包和简化代码结构。

定义匿名函数

在 Go 语言中,可以使用关键字 func 定义一个匿名函数。匿名函数的定义格式与普通函数类似,只是没有函数名。例如:

func() {
    fmt.Println("Hello, world!")
}()

在上面的示例中,定义了一个匿名函数,该函数没有参数和返回值,直接输出一个字符串。匿名函数的定义后面加上一对括号,表示立即执行该函数。

将匿名函数赋值给变量

在 Go 语言中,可以将匿名函数赋值给变量,从而可以像普通函数一样调用。例如:

add := func(a, b int) int {
    return a + b
}
c := add(1, 2)
fmt.Println(c) // 输出 3

在上面的示例中,将一个匿名函数赋值给变量 add,表示定义了一个名为 add 的函数,可以像普通函数一样调用。

匿名函数作为参数

在 Go 语言中,可以将匿名函数作为参数传递给其他函数。这种用法通常用于实现回调函数和函数式编程。例如:

func apply(arr []int, f func(int) int) []int {
    result := make([]int, len(arr))
    for i, v := range arr {
        result[i] = f(v)
    }
    return result
}

arr := []int{1, 2, 3, 4, 5}
square := func(x int) int { return x * x }
result := apply(arr, square)
fmt.Println(result) // 输出 [1 4 9 16 25]

在上面的示例中,定义了一个名为 apply 的函数,该函数接受一个整数数组和一个匿名函数作为参数。函数内部将匿名函数应用到数组的每个元素上,并返回一个新的数组。

变参函数

在 Go 语言中,可以定义变参函数,即函数可以接受任意数量的参数。变参函数使用省略号 ... 来表示,通常放在参数列表的最后一个参数位置。变参函数内部可以将变参视为一个切片来处理。例如:

func sum(nums ...int) int {
    total := 0
    for _, num := range nums {
        total += num
    }
    return total
}

c := sum(1, 2, 3, 4, 5)
fmt.Println(c) // 输出 15

在上面的示例中,定义了一个名为 sum 的变参函数,该函数接受任意数量的整数参数,并返回它们的总和。在函数内部,将变参视为一个切片 nums,然后遍历切片计算总和。

总结

函数是 Go 语言中基本的代码组织方式,可以将一段代码封装成一个可重用的单元,并通过参数和返回值与其他代码进行交互。在本篇技术博客中,我们介绍了 Go 语言中函数的相关知识,包括函数的定义、调用、参数、返回值、匿名函数和变参函数等。函数是 Go 语言中非常重要的概念,掌握函数的相关知识对于编写良好的代码至关重要。

YOLO26原创优化:SPPF优化 | 新一代高效可形变卷积DCNv4如何做二次创新?高效结合SPPF 如何跟YOLO26结合:1) SPPF高效结合 阅读详情

相关推荐

Unity Spine动画控制全攻略:播放、回调与停止的实战技巧

本文深入解析Unity中Spine动画的核心控制技巧,涵盖动画播放、轨道分层、事件回调与平滑停止等实战方法。通过封装SpineAnimationController,详细讲解了如何利用动画播放结束回调实现精准的游戏逻辑同步,并提供了避免内存泄漏和动画卡顿的避坑指南,助力开发者打造流畅专业的2D游戏动画系统。

weixin_29021291的博客 380

Go语言学习笔记 汇总(一)

一.常量 定义形式 const a=100 const str="HELLO" const( a=100 b=99 c=10 ) 常量一经定义,其值便无法被更改 二.iota 1.iota是常量自动生成器,每行写一个,自动累加1 2.iota可以给常量赋值 3.iota的赋值形式 01.const a=iota 02.const( a=iota b c ) 此时 a=0,b=1,c=2 03.co...

塞外听雪 431

AD9371 官方例程构建及单音信号收发

项目构建基本流程和AD9361差不多,由于官方使用的ZCU102,记录下移植遇到的一些问题最终接收到正确的正弦波Errors: 0Errors: 0Errors: 0Errors: 0AD9361。

weixin_44630490的博客 2973

GO学习笔记——函数(8)

GO语言中的函数定义和C++也有一点差异,先来看一下一个简单的函数定义模型 func add(a,b int) int{ return a + b } 还是先说一下几点注意的地方 GO语言中函数定义需要加上关键字func GO中的函数定义和变量定义的格式一样,函数名在前,返回值类型在后 函数也是可以不需要返回值的,这就和C++的void返回值类似;同样参数也是可以没有的 说一下GO语...

pigff的博客 320

基于Ansys Fluent 的颗粒分离/过滤解决方案

过滤是指通过特殊装置将颗粒移除,将流体提纯净化的过程。过滤的方式很多,应用的物系也很广泛,固-液、固-气、大颗粒-小颗粒等。

sh_djoin的博客 1852

嵌入式SPI总线抽象设计:跨平台驱动与分层解耦实践

SPI(串行外设接口)是嵌入式系统中应用最广泛的同步串行通信协议,其核心价值在于高吞吐、低开销与硬件简洁性。其工作原理基于主从架构、全双工/半双工时序及片选(CS)控制,依赖CPOL/CPHA组合定义四种标准模式。在工程实践中,SPI常面临硬件资源受限、多外设共用总线、MCU平台迁移等挑战,导致驱动复用率低、维护成本高。通过结构体+函数指针实现的分层抽象——将物理总线、协议适配与设备驱动解耦,可显著提升代码可移植性与扩展性。该方法天然支持硬件SPI与GPIO模拟SPI双模式切换,并已在STM32等主流MCU

weixin_42601134的博客 60

Go学习笔记之函数类型

函数类型 package main import "fmt" func add(a,b int) int { return a+b } func minus(a,b int) int { return a-b } //函数也是一种数据类型,可以通过type给它取别名 //FuncType是一种函数类型,后面的函数没有名称,没有{},只要参数和返回值类型相同就行 type FuncType func(a,b int) int func main() { var sum FuncType s

all_about_WZY的博客 311

Sigrity SPEED2000 TDR TDT Simulation模式如何进行时域阻抗仿真分析操作指导-差分信号

Sigrity SPEED2000 TDR TDT Simulation模式如何进行时域阻抗仿真分析操作指导-单端信号详细介绍了单端信号如何进行TDR仿真分析,下面介绍如何对差分信号进行TDR分析,还是以下图为例进行分析。Impedance是时域阻抗曲线,也是最主要的观测指标,注意:impedance曲线的时间刻度不是延时,延时=时间刻度/2,因为TDR测量的是用一来一回的原理去测量的。Use Lossy peeling 默认不勾选,勾选的话代表同时仿真无损和有损方案,不勾选代表仅仿真有损方案。

weixin_54787054的博客 857

go语言func后面括号_Golang语言基础教程:函数初识

1.1 什么是函数函数是执行特定任务的代码块。1.2 函数的声明go语言至少有一个main函数语法格式:func funcName(parametername type1, parametername type2) (output1 type1, output2 type2) { //这里是处理逻辑代码 //返回多个值 return value1, value2 } func:函数由 func 开...

weixin_28953819的博客 3341

芯片ATE测试PAT(Part Average Testing)学习总结-20250916

文章摘要:零件平均测试(PAT)是半导体制造中基于统计学的质量控制方法,分为静态和动态两种类型。静态PAT通过预先设定的固定限值(每6-8批次更新)筛选异常芯片,计算采用稳健平均值和四分位间距。动态PAT则根据实时数据调整限值,能更精确识别异常而不误判合格芯片。两种方法均采用"均值±6倍标准差"的计算公式,但动态PAT具有更好的适应性和准确性。该方法通过统计分析提高了芯片产品的质量和可靠性。

歌颂苦难的行为是无耻的; 1191

华为OD机试 - 跳房子I(Java 双机位A卷 100分)

可行的两步组合有 [1, 2] (索引和 0+3=3)、[1, 2] (索引和 0+4=4)、[4, 2] (索引和 1+3=4)、[4, 2] (索引和 1+4=5)、[5, 2] (索引和 2+3=5)、[5, 2] (索引和 2+4=6)。此样例有多种组合满足两回合跳到最后,譬如[-1,9], [2,6],其中[-1,9]的索引和为0+3=3, [2,6]的索引和为1+4=5, 所以索引和最小的步数组合为[-1,9].[3, 2] 和 [1, 4] 都满足和等于 5,且索引和均为 3。

学Java,找哪吒 4508

13 go语言(golang) - 函数

一个简单的函数定义包括关键字func、函数名、参数列表、返回值列表(可选)以及函数体。func 函数名(参数列表) 返回值类型 {函数体func:用于声明一个新函数。函数名:这是函数的名称。参数列表:表示该函数接的参数。返回值类型:表示该函数返回的结果类型,没有返回时可以省略。函数体:包含了实际执行操作的代码块。

瑞瑞的博客 917

5步VS传统WinForm!AntdUI让界面设计从“土味”到“超模”只需30秒?

摘要:墨瑾轩编程教程《AntdUI的5大魔法步骤》详解如何将传统WinForm升级为现代化UI。教程通过5个核心步骤:安装AntdUI库、控件替换、主题定制、复杂布局构建及实战案例演示,对比传统开发与AntdUI在美观度(动态阴影/动画)、开发效率(拖拽组件VS手工绘制)和主题定制(一键换肤VS重写控件)的显著差异。使用C#代码示例展示按钮动画、3D翻转、聊天界面等特效实现,帮助开发者快速掌握这一基于Ant Design风格的WinForm增强框架。(150字)

java专栏 1129

【Golang 基础系列十四】Go 语言函数

概述 函数是基本的代码块,用于执行一个任务 语法 函数定义 func 函数名称( 参数列表] ) (返回值列表]){ 执行语句 } 一.函数参数 无参数无返回 func add() 有参数有返回 func add(a, b int) int 函数值传递 func swap(x,y int) int { var temp int temp = x x = y y ...

郭枫的博客 647

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Go语言自学系列 | golang 函数

视频来源:B站《golang入门到项目实战 [2021最新Go语言教程,没有废话,纯干货!持续更新中...]》 一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持! 附上汇总贴:Go语言自学系列 | 汇总_COCOgsta的博客-优快云博客 golang函数简介 函数的go语言中的一级公民,我们把所有的功能单元都定义在函数中,可以重复使用。函数包含函数的名称、参数列表和返回值类型,这些构成了函数的签名(signature)。 go语言中函数特性 go语言中有3种函数:普

团爸讲算法 773

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【Golang】Go语言函数

Go语言函数特点包括:无需声明原型、支持不定变参、多返回值、匿名函数和闭包,函数可作为类型赋值给变量,但不支持嵌套、重载和默认参数。文章介绍了基本函数定义格式、匿名函数、自执行函数(只执行一次)、闭包函数(返回函数的函数)以及延迟调用(defer)机制。通过示例代码展示了各种函数的使用方式,包括参数传递、返回值处理、函数赋值等特性。

weixin_73059729的博客 459

Go语言自学系列 | golang函数的返回值

视频来源:B站《golang入门到项目实战 [2021最新Go语言教程,没有废话,纯干货!持续更新中...]》 一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持! 附上汇总贴:Go语言自学系列 | 汇总_COCOgsta的博客-优快云博客 函数可以有0或多个返回值,返回值需要指定数据类型,返回值通过return关键字来指定。 return可以有参数,也可以没有参数,这些返回值可以有名称,也可以没有名称。go中的函数可以有多个返回值。 return关键字中指定了参数时,返

团爸讲算法 8146

Go语言自学系列 | golang高阶函数

视频来源:B站《golang入门到项目实战 [2021最新Go语言教程,没有废话,纯干货!持续更新中...]》 一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持! 附上汇总贴:Go语言自学系列 | 汇总_COCOgsta的博客-优快云博客 go语言的函数,可以作为函数的参数,传递给另外一个函数,作为另外一个函数的返回值返回。 go语言函数作为参数 package main import "fmt" func sayHello(name string) {

团爸讲算法 920

【go语言】函数

在 go 语言中,函数是代码块的集合,用于执行特定任务或者计算。函数接受输入(成为参数),执行操作并返回输出(称为返回值)。go 语言中的函数定义非常简单且灵活。在 go 语言中,函数通过 func 关键字定义。func:用于声明函数。:函数的名字,通常首字母大写表示公开(exported)函数,首字母小写表示私有(unexported)函数。:参数列表(可选),参数使用name type的格式。多个参数之间用逗号分隔。returnType:返回值类型(可选)。如果函数没有返回值,则省略。

加油,考上985的研究生 1541

Golang基础语法(go语言函数、闭包)

/ 函数体func:函数关键字,任何一个函数都有func关键字开始声明。function_name:函数名称,参数列表和返回值类型构成了函数签名。parameter list:参数列表,参数列表指定的是参数类型、顺序、及参数个数。参数是可选的,也就是说函数也可以不包含参数。return_types:返回类型,函数返回一列值。return_types 是该列值的数据类型。有些功能不需要返回值,这种情况下 return_types 不是必须的。函数体:函数定义的代码集合。

Atticus的博客 797

C语言竟可以调用Go语言函数,这是如何实现的?

大家好,我是飞哥!今天和大家聊一个问题,一门语言是否可以在同一个进程内调用另外一门语言实现的函数?例如 C 语言是否可以调用 Golang 实现的函数?注意我说的是同进程内调用,跨进程的 IPC、PRC 之类的技术不算。直接抛出这个问题的答案,同进程跨语言调用是可行的。在各种语言设计时,为了复用其它语言生态中积累下来的大量的代码资产,都会实现跨语言调用的机制。例如在 Golang 中,实现了 cg...

zhangyanfei01的专栏 973

Go语言学习笔记—golang函数

golang 函数

qq_39280718的博客 592

【Golang 基础】 Go 语言 函数式编程

Go 语言函数式编程   在 Go 语言中函数是一等公民,它作为一个变量、类型、参数、返回值,甚至可以去实现一个接口,但是 Go 语言中函数不支持重载、嵌套和默认参数。 通过使用 func关键字来定义函数 package main func main(){ } 函数支持的特性 作为变量; func test(){ // 函数体 } funcTest := test fm...

hvkCoder的博客 531

Go语言自学系列 | golang函数的参数

视频来源:B站《golang入门到项目实战 [2021最新Go语言教程,没有废话,纯干货!持续更新中...]》 一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持! 附上汇总贴:Go语言自学系列 | 汇总_COCOgsta的博客-优快云博客 go语言函数可以有0或多个参数,参数需要指定数据类型。 声明函数时的参数列表叫做形参,调用时传递的参数叫做实参。 go语言是通过传值的方式传参的,意味着传递给函数的是拷贝后的副本,所以函数内部访问、修改的也是这个副本。 go语言可以

团爸讲算法 2392

golang延时_关于go 语言中的延迟执行函数

许多内置的带有返回值的函数无法进行延迟调用在go语言中,调用自定义函数的结果值可以全部不存在(丢弃)。但是,对于具有非空白返回结果列表的内置函数,他们的调用的结果不可以抛弃,copy和recover例外。 换句话说,延迟执行函数的结果必须被抛弃,所以许多内置函数无法被延迟。幸运的是,在实践中,很有偶需要延迟执行内置函数的地方。据我所知,只有append函数可能需要被延迟执行。这种情况下,我们可以把...

weixin_33205735的博客 4395

Go语言自学系列 | golang init函数

视频来源:B站《golang入门到项目实战 [2021最新Go语言教程,没有废话,纯干货!持续更新中...]》 一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持! 附上汇总贴:Go语言自学系列 | 汇总_COCOgsta的博客-优快云博客 golang有一个特殊的函数init函数,先于main函数执行,实现包级别的一些初始化操作。 init函数的主要特点 init函数先于main函数自动执行,不能被其他函数调用 init函数没有输入参数、返回值 每个包可以有多个in

团爸讲算法 808

语言与golang语言运行速度_Golang语言情怀第7期 Go 语言函数

本期给大家梳理下Go语言函数, 如下函数是基本的代码块,用于执行一个任务。Go 语言最少有个 main() 函数。你可以通过函数来划分不同功能,逻辑上每个函数执行的是指定的任务。函数声明告诉了编译器函数的名称,返回类型,和参数。Go 语言标准库提供了多种可动用的内置的函数。例如,len() 函数可以接受不同类型参数并返回该类型的长度。如果我们传入的是字符串则返回字符串的长度,如果传入的是...

weixin_31907553的博客 115
上一篇: Go 语言异常处理
下一篇: Go 匿名函数 & defer 语句
GeeCode
博客等级 码龄3年 2粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值