定义格式
函数构成代码执行的逻辑结构。在Go语言中,函数的基本组成为:关键字func、函数名、参数列表、返回值、函数体和返回语句。
Go语言函数定义格式如下:
funcFuncName(/*参数列表*/)(o1type1,o2type2/*返回类型*/){
//函数体、
returnv1,v2//返回多个值
}
函数定义说明:
func:函数由关键字func开始声明
FuncName:函数名称,根据约定,函数名首字母小写即为private,大写即为public
参数列表:函数可以有0个或多个参数,参数格式为:变量名类型,如果有多个参数通过逗号分隔,不支持默认参数
返回类型:
① 上面返回值什么两个变量名,当然这不是必须的,可以有类型,没变量。② 如果只有一个返回值且不声明返回值变量,那么你可以省略,包括返回值的括号。③ 如果没有返回值,那么就直接省略最后的返回信息。④ 如果有返回值,那么必须在函数的内部添加return语句
Argo Blockchain 12月开采147个比特币:金色财经报道,加密矿企Argo Blockchain宣布12月运营更新数据,在12月份,Argo开采了147个比特币,而2022年11月为198个BTC。截至2022年12月31日,公司持有141个比特币,其中116个为比特币等价物。公司的总哈希率容量继续为2.5EH/s。Argo12月的比特币和比特币等价采矿利润率为48%。[2023/1/11 11:06:37]
函数定义
无参无返回值
funcTest(){//无参无返回值函数定义
fmt.Println("thisisatestfunc")
}
funcmain(){
Test()//无参无返回值函数调用
}
有参无返回值
普通参数列表
funcTest01(v1int,v2int){//方式1
链上分析平台Ergo Watch正式上线:据官方消息,Ergo新的链上分析平台 Ergo Watch 现已上线,用户现在可以在该平台上查询有用指标,例如ERG释放、开发者和用户增长、预言机池和 SigUSD等相关数据,以及在交易所的流动性、智能合约中的总锁定价值、平均持有时间和 SigUSD等指标。该平台大量开发工作由社区开发者 abcchris完成。[2021/12/12 7:33:58]
fmt.Printf("v1=%d,v2=%d\n",v1,v2)
}
funcTest02(v1,v2int){//方式2,v1,v2都是int类型
fmt.Printf("v1=%d,v2=%d\n",v1,v2)
}
funcmain(){
Test01(10,20)//函数调用
Test02(11,22)//函数调用
Avalanche发布AvalancheGo v1.2.4版本:3月18日,Avalanche官方发推宣布,已推出AvalancheGo v1.2.4版本。该版本包括稳定性和监控性能改进等内容。[2021/3/18 18:55:30]
}
不定参数类型
不定参数是指函数传入的参数个数为不定数量。为了做到这点,首先需要将函数定义为接受不定参数类型:
//形如...type格式的类型只能作为函数的参数类型存在,并且必须是最后一个参数funcTest(args...int){
for_,n:=rangeargs{//遍历参数列表
fmt.Println(n)
}
}
funcmain(){
//函数调用,可传0到多个参数
Test()
Test(1)
Argo Blockchain将提前交付1058个S19和S19 Pro矿机:英国上市矿企Argo Blockchain将提前三周交付1058个S19和S19 Pro矿机,并将在1月25日之前全面投入运营。新矿机预计将使公司当前的算力增加103倍,并在2021年1月底之前将总算力增加到748 petahash。(FinanceMagnates)[2021/1/11 15:53:04]
Test(1,2,3,4)
}
不定参数的传递
funcMyFunc01(args...int){
fmt.Println("MyFunc01")
for_,n:=rangeargs{//遍历参数列表
fmt.Println(n)
}
}
funcMyFunc02(args...int){
Argo Blockchain5月共挖出252枚比特币 受减半影响环比下降:伦敦上市挖矿公司Argo Blockchain公布了其5月运营数据。2020年5月,Argo Blockchaino共挖出了252枚比特币,相较于4月份挖出的319枚BTC有所减少,这使得今年前5个月开采的BTC总量达到1489个。本月挖矿产出减少的主要原因是区块奖励减半。根据当月的每日外汇汇率和加密货币价格,5月份的挖矿收入为193万英镑,较4月的180万英镑有一定提高。(ADVFN)[2020/6/3]
fmt.Println("MyFunc02")
for_,n:=rangeargs{//遍历参数列表
fmt.Println(n)
}
}
funcTest(args...int){
MyFunc01(args...)//按原样传递,Test()的参数原封不动传递给MyFunc01
MyFunc02(args...)//Test()参数列表中,第1个参数及以后的参数传递给MyFunc02
}
funcmain(){
Test(1,2,3)//函数调用
}
无参有返回值
有返回值的函数,必须有明确的终止语句,否则会引发编译错误。
一个返回值
funcTest01()int{//方式1
return250
}
//官方建议:最好命名返回值,因为不命名返回值,虽然使得代码更加简洁了,但是会造成生成的文档可读性差
funcTest02()(valueint){//方式2,给返回值命名
value=250
returnvalue
}
funcTest03()(valueint){//方式3,给返回值命名
value=250
return
}
funcmain(){
v1:=Test01()//函数调用
v2:=Test02()//函数调用
v3:=Test03()//函数调用
fmt.Printf("v1=%d,v2=%d,v3=%d\n",v1,v2,v3)
}
多个返回值
funcTest01()(int,string){//方式1
return250,"sb"
}
funcTest02()(aint,strstring){//方式2,给返回值命名
a=250
str="sb"
return
}
funcmain(){
v1,v2:=Test01()//函数调用
_,v3:=Test02()//函数调用,第一个返回值丢弃
v4,_:=Test02()//函数调用,第二个返回值丢弃
fmt.Printf("v1=%d,v2=%s,v3=%s,v4=%d\n",v1,v2,v3,v4)
}
有参有返回值
//求2个数的最小值和最大值
funcMinAndMax(num1int,num2int)(minint,maxint){
ifnum1>num2{//如果num1大于num2
min=num2
max=num1
}else{
max=num2
min=num1
}
return
}
funcmain(){
min,max:=MinAndMax(33,22)
fmt.Printf("min=%d,max=%d\n",min,max)//min=22,max=33
}
一项新的调查显示,在违约的情况下,散户投资者更喜欢比特币而不是美元。专家警告说,美国最早可能在6月1日出现违约。渣打银行分析师杰夫肯德里克此前预测,如果美国违约,比特币价格将上涨70%.
1900/1/1 0:00:00随着区块链变得越来越流行,它仍然在努力应对大量的数据。这种处理数据的能力称为扩展,它对于广泛的区块链采用至关重要。区块链需要扩展以供人们建立和使用他们想要的应用程序.
1900/1/1 0:00:00这个第一人称射击游戏对我来说有趣的地方在于,它整合了许许多多的技能,可以容纳各种玩法,有着强大的社区,以及不断的地图和武器更新.
1900/1/1 0:00:00随着我们进入数字时代,我们的金融系统正在经历重大变革。处于这场数字革命前沿的是比特币(BTC),它是世界上第一种也是最有价值的加密货币,在我们的日常生活中变得越来越普遍.
1900/1/1 0:00:00BNB遭遇重大挫折,市值损失100亿美元。美国证券交易委员会对该交易所提起诉讼,指控其提供未注册的证券.
1900/1/1 0:00:00仅在三笔交易中,就有450,000枚以太币(ETH)转移到Coinbase,这只能说是加密货币市场上的一件大事。这种大量涌入交易所的加密货币代表了有史以来最大的以太币运动之一.
1900/1/1 0:00:00