Golang入门到项目实战 | golang 函数函数的go语言中的一级公民,我们把所有的功能单元都定义在函数中,可以重复使用 。函数包含函数的名称、参数列表和返回值类型,这些构成了函数的签名(signature) 。
函数在使用之前必须先定义,可以调用函数来完成某个任务 。函数可以重复调用 , 从而达到代码重用 。
go语言函数定义语法
语法解析:
go语言函数定义实例
定义一个求和函数
定义一个比较两个数大小的函数
go语言函数调用
当我们要完成某个任务时,可以调用函数来完成 。调用函数要传递参数,如何有返回值可以获得返回值 。
运行结果
GO语言学习系列八——GO函数(func)的声明与使用 GO是编译性语言go语言func定义实例,所以函数的顺序是无关紧要的,为了方便阅读,建议入口函数 main 写在最前面,其余函数按照功能需要进行排列
GO的函数 不支持嵌套,重载和默认参数
GO的函数 支持 无需声明变量 , 可变长度,多返回值,匿名,闭包等
GO的函数用 func 来声明,且左大括号 { 不能另起一行
一个简单的示例go语言func定义实例:
输出为:
参数:可以传0个或多个值来供自己用
返回:通过用 return来进行返回
输出为:
上面就是一个典型的多参数传递与多返回值
对例子的说明:
按值传递:是对某个变量进行复制,不能更改原变量的值
引用传递:相当于按指针传递,可以同时改变原来的值,并且消耗的内存会更少 , 只有4或8个字节的消耗
在上例中 , 返回值 (d int, e int, f int) { 是进行了命名 , 如果不想命名可以写成 (int,int,int){ ,返回的结果都是一样的 , 但要注意:
当返回了多个值 , 我们某些变量不想要,或实际用不到,我们可以使用 _ 来补位,例如上例的返回我们可以写成 d,_,f := test(a,b,c),我们不想要中间的返回值 , 可以以这种形式来舍弃掉
在参数后面以 变量 ... type 这种形式的,我们就要以判断出这是一个可变长度的参数
输出为:
在上例中,strs ...string 中 , strs 的实际值是b,c,d,e,这就是一个最简单的传递可变长度的参数的例子,更多一些演变的形式,都非常类似
在GO中 defer 关键字非常重要 , 相当于面相对像中的析构函数,也就是在某个函数执行完成后,GO会自动这个;
如果在多层循环中函数里 , 都定义了 defer ,那么它的执行顺序是先进后出;
当某个函数出现严重错误时,defer 也会被调用
输出为
这是一个最简单的测试了,当然还有更复杂的调用 , 比如调试程序时,判断是哪个函数出了问题,完全可以根据 defer 打印出来的内容来进行判断 , 非常快速,这种留给go语言func定义实例你们去实现
一个函数在函数体内自己调用自己我们称之为递归函数,在做递归调用时 , 经常会将内存给占满,这是非常要注意的,常用的比如 , 快速排序就是用的递归调用
本篇重点介绍了GO函数(func)的声明与使用,下一篇将介绍GO的结构 struct
func函数是干什么的?Func函数是包含在Function和End Function语句之间的一组VBScript语句 。
Func函数与Sub过程类似 。但Func函数可以有返回值 。可以使用参数 。如果Func函数没有任何参数,则Function语句必须要包含空括号 。Func函数通过函数名返回一个值 。返回值的数据类型是Variant 。
语法: Function 函数名 (参数1,参数2 , ...)
...
End Function
func在go语言中的使用:
在 Go 语言中 , 函数声明通用语法如下:
func functionname(parametername type) returntype {
// 函数体(具体实现的功能)
}
函数的声明以关键词 func 开始,后面紧跟自定义的函数名 functionname (函数名) 。函数的参数列表定义在 ( 和 ) 之间,返回值的类型则定义在之后的 returntype (返回值类型)处 。
声明一个参数的语法采用 参数名 参数类型 的方式 , 任意多个参数采用类似 (parameter1 type, parameter2 type) 即(参数1 参数1的类型,参数2 参数2的类型)的形式指定 。之后包含在 { 和 } 之间的代码,就是函数体 。
go语言语法(基础语法篇)import "workname/packetfolder"
导入多个包
方法调用 包名.函数//不是函数或结构体所处文件或文件夹名
packagename.Func()
前面加个点表示省略调用go语言func定义实例,那么调用该模块里面go语言func定义实例的函数,可以不用写模块名称go语言func定义实例了:
当导入一个包时,该包下的文件里所有init()函数都会被执行,然而,有些时候我们并不需要把整个包都导入进来,仅仅是是希望它执行init()函数而已 。下划线的作用仅仅是为go语言func定义实例了调用init()函数,所以无法通过包名来调用包中的其go语言func定义实例他函数
import _ package
变量声明必须要使用否则会报错 。
全局变量运行声明但不使用 。
func 函数名 (参数1 , 参数2,...) (返回值a 类型a, 返回值b 类型b,...)
func 函数名 (参数1,参数2,...) (返回值类型1, 返回值类型2,...)
func (this *结构体名) 函数名(参数 string) (返回值类型1, 返回值类型2){}
使用大小来区分函数可见性
大写是public类型
小写是private类型
func prifunc int{}
func pubfunc int{}
声明静态变量
const value int
定义变量
var value int
声明一般类型、接口和结构体
声明函数
func function () int{}
go里面所有的空值对应如下
通道类型
内建函数 new 用来分配内存,它的第一个参数是一个类型,不是一个值,它的返回值是一个指向新分配类型零值的指针
func new(Type) *Type
[这位博主有非常详细的分析]
Go 语言支持并发,我们只需要通过 go 关键字来开启 goroutine 即可 。
goroutine 是轻量级线程 , goroutine 的调度是由 Golang 运行时进行管理的 。
同一个程序中的所有 goroutine 共享同一个地址空间 。
语法格式如下:
通道(channel)是用来传递数据的一个数据结构 。
通道的声明
通道可用于两个 goroutine 之间通过传递一个指定类型的值来同步运行和通讯 。操作符 - 用于指定通道的方向,发送或接收 。如果未指定方向,则为双向通道 。
[这里有比较详细的用例]
go里面的空接口可以指代任何类型(无论是变量还是函数)
声明空接口
go里面的的强制类型转换语法为:
int(data)
如果是接口类型的强制转成其他类型的语法为:
go里面的强制转换是将值复制过去,所以在数据量的时候有比较高的运行代价
【go语言func定义实例 go语言for】go语言func定义实例的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于go语言for、go语言func定义实例的信息别忘了在本站进行查找喔 。
推荐阅读
- Sap上线难,上线sap大概需要多少钱
- sqlserver2008基础班,sql server基础教程
- 益智练字游戏,练字游戏软件
- 电商优惠券营销如何加入,电商优惠券营销如何加入企业微信
- linux系统模拟命令行 linux 模拟
- python数组插入元素,python向数组添加元素
- java递归算法代码,java 递归
- 泡妞真实的视频直播平台,泡妞真实的视频直播平台在线观看
- vc中c语言延时函数 c语言中的延时函数