符合中小企业对网站设计、功能常规化式的企业展示型网站建设
本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...
商城网站建设因基本功能的需求不同费用上面也有很大的差别...
手机微信网站开发、微信官网、微信商城网站...
本篇内容主要讲解“如何使用Go语言中的普通的函数”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用Go语言中的普通的函数”吧!
创新互联是一家集网站建设,潞城企业网站建设,潞城品牌网站建设,网站定制,潞城网站建设报价,网络营销,网络优化,潞城网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
在 Go 语言中普通函数的定义格式为 func [函数名](入参)(出参),如下:
func callFuncA(x, y string) (s string, err error) { return x + y, nil } func main() { callFuncA("炸", "煎鱼") }
在示例代码中声明了一个函数名为 callFuncA 的方法,他只允许在包内调用,因此首字母为小写。
其具有两个入参,分别是 x 和 y,类型都为 string。而出参为变量 s 和 err,类型分别为 string 和 error。
另外在函数体内返回值时,也可以采用快捷返回的方式:
func callFuncA(x, y string) (s string, err error) { s = x + y return }
在出参时所声明的变量名称,是可以应用到自身函数的。因此若直接执行 return 则会隐式返回已经声明的出参变量。
在函数定义时,其入参还支持可变参数的语法:
func callFuncA(x ...string) (s string, err error) { s = strings.Join(x, ",") return } func main() { fmt.Println(callFuncA("炸", "煎鱼")) }
在入参变量上声明为 x ...string,则表示变量 x 是 string 类型的可变变量,能够在入参时传入多个 string 参数。
可变变量所传入的格式为切片(slice)类型,该类型我们会在后面的章节进行讲解,你可以理解为不受长度限制的动态数组:
[0: 炸 1: 煎鱼]
一般对可变变量的常见后续操作多是循环遍历处理,又或是进行拼接等操作。
Go 语言也默认支持匿名函数的声明,声明的方式与普通函数几乎一样:
func main() { s := func(x, y string) (s string, err error) { return x + y, nil } s("炸", "煎鱼") }
匿名函数可以在任意地方声明,且不需要定义函数名,如果在函数体后马上跟 () 则表示声明后立即执行:
func main() { s, _ := func(x, y string) (s string, err error) { return x + y, nil }("炸", "煎鱼") }
而在所有的函数类使用中,有一点非常重要,那就是函数变量作用域的理解:
func main() { x, y := "炸", "煎鱼" s, _ := func() (s string, err error) { return x + y, nil }() fmt.Println(s) }
该匿名函数没有形参,函数内部没有定义相应的变量,此时其读取的是全局的 x、y 变量的值,输出结果是 “炸煎鱼”。
func main() { x, y := "炸", "煎鱼" _, _ = func(x, y string) (s string, err error) { x = "吃" return x + y, nil }(x, y) fmt.Println(x, y) }
该匿名函数有形参,但是在函数内部又重新赋值了变量 x。那么最终外部所输出的变量 x 的值是什么呢?输出结果是 “炸 煎鱼”。
为什么明明在函数内已经对变量 x 重新赋值,却依然没有改变全局变量 x 的值呢?
其本质原因是作用域不同,函数内部所修改的变量 x 是函数内的局部变量。而外部的是全局的变量,所归属的作用域不同。
在结合结构体(struct)的方式下,可以声明归属于该结构体下的方法:
type T struct{} func NewT() *T { return &T{} } func (t *T) callFuncA(x, y string) (s string, err error) { return x + y, nil } func main() { NewT().callFuncA("炸", "煎鱼") }
具体的函数的使用方法与普通函数一样,无其他区别。
而与结构体有关的值传递、引用传递的方法调用将在具体后面的章节再展开。
Go 语言本身有支持一些内置函数,这些内置函数的调用不需要引用第三方标准库。内置函数的作用是用于配合 Go 语言的常规使用,数量非常少。如下:
用于获取某些类型的长度和容量:len、cap。
用于创建并分配某些类型的内存:new、make。
用于错误处理机制(异常恐慌、异常捕获):panic、recover。
用于复制和新增切片(slice):copy、append。
用于简单输出信息:print、println。
用于处理复数:complex、real、imag。
针对每个内置函数的真实使用场景,我们会在后续的章节再进一步展开,因为每个内置函数本质上都对应着各类型的使用场景。
到此,相信大家对“如何使用Go语言中的普通的函数”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!