Go语言学习笔记 --- function

Go函数--匿名函数与闭包 0 匿名函数概念 Go语言提供两种函数:有名函数和匿名函数。所谓匿名函数就是没有函数名的函数。匿名函数没有函数名,只有函数体。它和有名函数的最大区别是:我们可以在函数内部定义匿名函数,形成类似嵌套的效果。 匿名函数常用于实现回调函数、闭包等。 1 匿名函数 1.1 匿名函数的定义格式 func (参数列表) (返回值参数列表) { 函数体 } <说明> 匿名函数除了没有函数名外,和普通函数完全相同。 1.2 匿名函数的特点 1、可以在定义匿名函数的同时直接调用执... 阅读详情

学习笔记根据 无闻 go语言基础教程 整理

function

  • Go 函数不支持嵌套、重载和默认参数
  • 支持:无需声明原型、不定长度变参、多返回值、命名返回值参数、匿名函数、闭包
  • 定义函数使用关键字func,且左大括号不能另起一行
  • 函数也可以做为一种类型使用
  • 示例代码:
package main

import (
    "fmt"
)

func main() {

}

// 参数列表和返回值,注意类型
func test1(a int b string) (int string) {
}

// 无返回值
func test2(a int b string) {
}

// 只有一个返回值
func test3(a int b string) bool {
}

// 参数类型一致,可以只写一个类型
func test4(a,b,c int) int {
}

// 返回值类型一致,可以只写一个类型, 命名返回值
func test5(a,b,c int) (a,b,c int) {
    a, b, c = 1, 2, 3 // 直接赋值= 不需要 :=
    return // 此时可以不写明具体的返回值,已经在上面命名了。
}

// 返回值类型一致,不命名返回值
func test6(a,b,c int) (int, int, int) {
    a, b, c := 1, 2, 3
    return a, b, c // 此处必须跟上返回了什么
}

// 相同类型的参数,但不定长,可以使用不定长变参, 不定长变参如 ...int 必须作为参数中的最后一项
func test7(a ...int) {
    fmt.Println(a) // 此时a代表所有的参数,类型为slice 如:[1 2 3]
}

// 值的拷贝,不影响原值
func test8(s ...int) {
    s[0] = 3 // 此处改变了参数列表的值
    s[1] = 4
    fmt.Println(s)
}

func test8T() {
    a, b := 1, 2
    test8(a, b) // [3, 4]
    fmt.Println(a, b) // 1 2 // 此处说明值并没有被改变
}

// 内存地址的拷贝,改变原值
func test9(s []int) {
    s[0] = 5
    s[1] = 6
    s[2] = 7
    s[3] = 8
    fmt.Println(s)
}

func test9T() {
    s1 := []int{1,2,3,4}
    test9(s1) // [5 6 7 8]
    fmt.Println(s1) // [5 6 7 8] // 可以看到原先传递进来的值被修改了
}

// 想把int型和string型等简单类型进行地址的拷贝,使用指针的方式, 参数传递地址
func test10(a *int) {
    *a = 2 // 改变指向
    fmt.Println(*a)
}

func test10T() {
    a := 1 // 原值
    test10(&a) // 2 // 内部被改变了指向
    fmt.Println(a) // 2 // 可以看到原值被改变
}

// 函数可以被赋值使用
func test11() {
    fmt.Println("Func 11")
}

func test11T() {
    a := test11 //
    a() // Func 11
}

// 闭包的支持
func test12(x int) func(int) int {
    return func (y int) int{
        return x + y
    }
}

func test12T() {
    f := test12(10)
    fmt.Println(f(1)) // 11
    fmt.Println(f(2)) // 12
}
Golang function 函数详解 对于任何语言而言,函数都是结构化编程中的重要一环,通过函数机制,可以把一个大的模块分解成多个小任务,让代码结构更清晰,可复用性大大提高。 本文将介绍如何定义,调用函数,如何定义和接收函数错误,以及 golang 特有的可变参数,闭包,defer,panic 和 recover 等机制。 阅读详情

相关推荐

ATE测试的未来:自动化与智能化的技术演进

本文探讨了自动测试设备(ATE)在半导体产业中的技术演进,重点关注自动化与智能化的发展趋势。随着芯片制程的不断进步,ATE面临测试复杂度激增和成本压力等挑战。文章分析了AI技术在测试优化中的应用,如自适应测试和缺陷预测,以及模块化架构和端到端测试生态系统的创新。这些技术突破显著提升了测试效率和设备利用率,为半导体测试的未来发展指明了方向。

weixin_29232507的博客 616

GO学习之 函数(Function)

在 Go 语言中,函数(Function)是一种可执行的代码块(对特定功能进行提取,形成代码片段),用于执行特定的任务或操作。 函数是 Go 语言中的基本组件,实现了模块化和复用的机制,让代码更加结构化和可维护。 无需声明原型,支持不定参数,支持多返回值,支持命名返回参数,支持匿名函数和闭包 函数也是一种类型,可以把一个函数赋值给一个变量

qq_19283249的博客 1708

从服装打版到激光切割:二维异形件排版算法在实际生产中的避坑指南

本文深入探讨二维异形件排版算法在服装、家具等行业的实际应用,对比NFP和重叠移除两种核心策略的优缺点,并提供算法落地的五大实战陷阱与解决方案。通过案例分析和技术要点解析,帮助生产管理者提升材料利用率5%-15%,优化生产效率。

weixin_28717431的博客 417

Go语言--函数(function)

函数是组织好的、可重复使用的、用来实现单一或相关联功能的代码段,其可以提高应用的模块性和代码的重复利用率。 Go语言支持普通函数、匿名函数和闭包,从设计上对函数进行了优化和改进,让函数使用起来更加方便。 ...

yunfan 2111

UE5新手必看:如何用蓝图系统快速打造赛车游戏(含Chaos Physics配置)

本文为UE5新手提供使用蓝图系统快速打造赛车游戏的完整指南,涵盖Chaos Physics配置、载具蓝图架构设计、控制逻辑实现等关键步骤。通过详细的实战案例和优化技巧,帮助开发者高效构建具备专业物理反馈的赛车游戏原型。

weixin_29001327的博客 389

Adams软件安装与配置全攻略:从入门到机器人仿真

机械系统动力学仿真软件Adams是工业机器人开发的重要工具,其安装过程涉及许可证配置、环境变量设置等关键技术环节。专业仿真软件安装通常需要处理系统兼容性、组件依赖和授权验证等工程问题,特别是在机器人控制仿真等场景中,还需集成MATLAB/Simulink等第三方工具。本文以Windows平台为例,详解Adams安装的核心步骤,包括系统环境检查、许可证服务器配置、工业机器人专项模块安装等实践要点,并针对NVIDIA Quadro显卡优化、27500端口通信等常见问题提供解决方案,帮助用户快速搭建可靠的仿真环境

weixin_28523493的博客 206

Go基础系列:函数(1)

Go中函数特性简介 对Go中的函数特性做一个总结。懂则看,不懂则算。 Go中有3种函数:普通函数、匿名函数(没有名称的函数)、方法(定义在struct上的函数)。 Go编译时不在乎函数的定义位置,但建议init()定义在最前面(如果有的话),main函数定义在init()之后,然后再根据函数名的字母顺序或者根据调用顺序放置各函数的位置。 函数的参数、返回值以及它们的类型,结合起来成为函数的签...

weixin_34365635的博客 202

企业微信会话存档SDK集成与动态库加载实战

本文详细解析了企业微信会话存档SDK的集成与动态库加载实战,重点解决Windows与Linux环境下动态库加载的差异问题。通过实战案例和优化建议,帮助开发者高效完成企业微信API集成,确保合规存档功能稳定运行。

weixin_26934905的博客 465

GO语言学习笔记———function

function in GO 1、GO语言中函数可以有多返回值 func operate(num1 int,num2 int)(difference int,plus int) { difference=num1-num2 plus=num1+num2 return difference,plus } a,b:=16,14 c,d:=operate(a,b) fmt.Print...

weixin_43256892的博客 192

Codex 100个真实案例 - 用AI画业务流程图Mermaid(产品经理都馋哭了)

还在用 Visio、ProcessOn 拖拖拽拽画流程图?改一个箭头方向就要调半天?本案例教你用 Codex 自然语言描述业务流程,AI 自动转为 Mermaid 代码,一秒生成专业流程图、时序图、甘特图、饼图!还能搭建在线渲染工具、批量导出 PNG/SVG、集成到文档系统。产品经理、架构师、项目经理都能用,从此画图再也不是体力活!

yueyeguzhuo的专栏 358

PhotovoltaicPanelCleanlinessDetector:基于YOLOv8的光伏板清洁状态监测系统

data.yamlyaml复制编辑names:0: clean1: dust3: leaves4: shadow✅ 高精度污染识别✅ 具备实时检测与UI展示✅ 可本地化部署应用未来方向增加污染程度分级(轻度、中度、严重)加入时间序列分析(污染变化趋势预测)无人机集成巡检模块。

YOLO 276

GO语言学习笔记-函数篇 Study for Go ! Chapter three - Function

持续更新 Go 语言学习进度中 ...... 2023-03-14 GO语言学习笔记 系列部分???? 已完结!! 对于刚刚接触 golang 来说,经过这段时间的学习,对于 GO这门语言已经有了初步的认识。 博主接下来会继续学习 golang 的更多内容,持续更新中...... GO语言学习笔记-类型篇 Study for Go! Chapter one - Type GO语言学习笔记-表达式篇...

Mercury_cc的博客 216

零基础学习CANoe Panel(5)——改变变量的值,控件图像也改变,这是怎么回事?

Panel 中控件的图像随着值变化,是怎么回事?

蚂蚁小兵 2146

GO语言学习笔记(七、function)

函数function Go函数不支持嵌套、重载和默认参数 但支持以下特性: 无需声明原型、不定长度变参、多返回值、命名返回值参数、匿名函数、闭包 定义函数使用关键字func,且左大括号不能另起一行 函数也可以作为一种类型使用 闭包 defer defer的执行方式类似其它语言中的析构函数,在函数体执行结束后按照调用顺序的相反顺序逐个执行 即使函数发生严重错误也会执行 支...

分享AI、区块链技术及应用,未来已来 535

IDEA的使用指南

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

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Go语言学习笔记之函数(function)

函数函数声明函数的声明方式func 函数名(形参变量 数据类型,...) (返回值 返回值类型) { // 函数体 }Go语言函数的声明跟C语言类似,只不过函数用func关键字声明,Go语言支持多重返回值,实例如下,func Add(a int, b int) (ret int, err error) { return a + b , nil }如果参数列表中若干个相邻的参数类型相同

半雨半晴的天空 674

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Apache Pulsar 之 Go Function

作者 | 冉小龙审校 | Anonymitaet编辑 | Susan阅读本文需要约 8 分钟。- 导读 -在学习如何编写、部署 Go Function 之前,先向大家介绍一下 Go F...

Apache Pulsar 487

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

golang语言学习#7-函数function

Go语言中函数不支持嵌套,重载和默认参数,但是支持以下特性:无需声明原型不定长度变参多返回值命名返回值参数匿名函数闭包定义函数时使用关键字func,且左大括号不能另起一行,同时,函数也可以作为一种类型使用接下来我们来创建几个函数 func A(){ fmt.Println("A") } func B(a int, b string)(int, string){ } func C(...

Aaron_Younggg的博客 259

理解go的function types

https://www.jianshu.com/p/fc4902159cf5 今天看Martini文档,其功能列表提到完全兼容http.HandlerFunc接口,就去查阅了Go: net/http的文档,看到type HandlerFunc这部分,顿时蒙圈了。由于之前学习的时候没有关注过function types的知识点,就Google了一些文章,才算是有了个大概的了解。 从gola...

yanyuan_smartisan的博客 336

5分钟快速上手golang_loader_assist:IDA Pro逆向Go程序从安装到运行的完整教程

如果你尝试过用 **IDA Pro** 逆向 Go 语言编写的程序,大概率会头疼:函数名全是 `sub_401000`、字符串找不到、Go 运行时函数乱成一团。**golang_loader_assist** 正是为了解决这个痛点而生的 **IDA Pro 逆向插件**——它来自安全研究员 Tim "diff" Strazzere 的开源项目,配套文章《Reversing GO binaries

gitblog_00829的博客 1061

恶意样本分析实战:用golang_loader_assist在IDA Pro中破解被strip的Go木马

越来越多的木马、勒索软件和挖矿程序开始用 Go 语言编写——跨平台编译、静态链接、并发能力强,让恶意代码作者爱不释手。但真正让逆向工程师头疼的是:攻击者通常用 `-ldflags "-s"` 对二进制做 strip 处理,抹掉符号表和函数名,导致 IDA Pro 里只剩一片 `sub_401000` 之类的匿名函数,分析无从下手。**golang_loader_assist** 正是为解决这一痛点

gitblog_00279的博客 842

rust-plus-golang项目终极指南:如何通过FFI实现Go调用Rust代码

rust-plus-golang项目是一个实用的开源解决方案,它展示了如何通过FFI(Foreign Function Interface)技术实现Go语言调用Rust代码。本指南将为你详细介绍这一过程,帮助你快速掌握在Go项目中集成Rust代码的方法。 ## 项目简介:Rust与Go的完美结合 Rust以其内存安全和高性能著称,而Go则以简洁的语法和出色的并发处理能力受到开发者青睐。rust

gitblog_00262的博客 1071

Go逆向不再头疼:golang_loader_assist让IDA Pro秒懂Go二进制的终极指南

Go逆向一直是安全研究者与CTF玩家的共同痛点:Go二进制文件结构特殊、函数名混乱、字符串散落各处,丢进IDA Pro里常常只剩一堆难以阅读的`sub_`和`off_`。而今天要介绍的 **golang_loader_assist**,正是一款专门解决"IDA Pro看不懂Go二进制"问题的开源**Go逆向辅助工具**。它由知名安全研究员Tim "diff" Strazzere(Red Naga团

gitblog_00207的博客 455

Coursera上Golang专项课程2:Functions, Methods, and Interfaces in Go 学习笔记

Golang中的函数,方法和接口

阿正的梦工坊 1522

in function ‘int main()’_Golang基础入门06 | Function

在任何编程语言中,都必须编写优秀的代码。 优秀的代码意味着高效运行和可读性强,大部分人(尤其是程序员或开发人员)都容易理解该代码。通过函数将大部分代码拆分为较小的代码块。Function in Go函数是一段代码,用于执行可以重用的特定任务。//func receiver functionName(parameters types) return type func (receiver)func...

weixin_32711097的博客 1812

[Go语言]从Docker源码学习Go——function和method

function和method关系 method是针对某一类型定义的function, function可以单独调用,method必须针对某一类型的实例进行调用 //function 调用方式 packageName.FuncName() //method 调用方式 var t packageName.Type t.MethodName() 源码 func (cli *Dock...

JackLiu16的博客 575
上一篇: Go语言学习笔记 --- map
下一篇: Go语言学习笔记 --- defer 、panic 、recover
Wang's Blog
博客等级 码龄12年 7438粉丝 2422原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值