一篇文章带你了解Go语言基础之函数(上篇)

 前言
Hey,大家好呀,我是星期八,这次咱们继续学习Go基础之函数叭。

创新互联的客户来自各行各业,为了共同目标,我们在工作上密切配合,从创业型小企业到企事业单位,感谢他们对我们的要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。专业领域包括成都做网站、网站制作、成都外贸网站建设、电商网站开发、微信营销、系统平台开发。

为什么需要函数
函数,在所有编程语言中都叫函数,Java,PHP,Python,JS等,统一都叫函数。

函数的作用
一般是这样形容的:函数可以将重复的,或者特定功能的,封装成一个方便调用的东西。

注:在Go中,函数是支持闭包的。

在没有使用函数时
代码

 
 
 
 
  1. package main 
  2.  
  3. import "fmt" 
  4.  
  5. func main() { 
  6.     //模拟一个打开文件,写入一行内容进入文件,在关闭文件的功能 
  7.     var file_name = "a.txt" //文件名 
  8.     var w_content = "爱我中华"  //写入的内容 
  9.     fmt.Println(fmt.Sprintf("打开 %s 文件",file_name)) 
  10.     fmt.Println(fmt.Sprintf("向 %s 文件写入了 %s ", file_name, w_content)) 
  11.     fmt.Println(fmt.Sprintf("关闭 %s 文件",file_name)) 
  12.  
  13.     //如果再再向其他文件写入内容,还需要复制一次 
  14.  
  15.     var file_name2 = "b.txt" //文件名 
  16.     var w_content2 = "中国威武"  //写入的内容 
  17.     fmt.Println(fmt.Sprintf("打开 %s 文件",file_name2)) 
  18.     fmt.Println(fmt.Sprintf("向 %s 文件写入了 %s ", file_name2, w_content2)) 
  19.     fmt.Println(fmt.Sprintf("关闭 %s 文件",file_name2)) 

使用函数后
将相同功能封装成函数。

 
 
 
 
  1. package main 
  2.  
  3. import "fmt" 
  4.  
  5. func w_file(filename string, w_content string) { 
  6.     fmt.Println(fmt.Sprintf("打开 %s 文件", filename)) 
  7.     fmt.Println(fmt.Sprintf("向 %s 文件写入了 %s ", filename, w_content)) 
  8.     fmt.Println(fmt.Sprintf("关闭 %s 文件", filename)) 
  9. func main() { 
  10.     //将相同功能封装成函数 
  11.     w_file("a.txt", "爱我中华") 
  12.     w_file("b.txt", "中国威武") 

上述代码执行的结果都如下

ps:但是可以明显看到,使用函数将相同功能抽出来,代码会变的简单,整洁。

函数使用
函数名命名规则
函数命名尽量以驼峰命名,例如:getName,connectData等。

语法
在Go中,定义函数语言用到func关键字。

 
 
 
 
  1. func 函数名([参数1 参数类型1,参数2 参数类型2,...]) [(返回值 返回值类型,...)]{ 
  2.     逻辑代码 
  3. //中括号表示可选参数 

无参数,无返回值

 
 
 
 
  1. package main 
  2.  
  3. import "fmt" 
  4.  
  5. func say1() { 
  6.     fmt.Println("我终于会说话了...") 

有参数,无返回值

 
 
 
 
  1. func say2(c string) { 
  2.     fmt.Println("我终于会说" + c + "了") 

有或者无参数,有返回值

 
 
 
 
  1. func say3(c string) (string) { 
  2.     fmt.Println("我终于会说" + c + "了") 
  3.     return "哦耶" 

main函数

 
 
 
 
  1. func main() { 
  2.     say1() 
  3.     say2("你好哇") 
  4.     result := say3("你好哇") 
  5.     fmt.Printf(result) 

结果

 
 
 
 
  1. package main 
  2.  
  3. import "fmt" 
  4.  
  5. func say() string{ 
  6.     fmt.Println("我终于会说话了...") 
  7.     return "" 
  8.  
  9. func main() { 
  10.     //函数名+括号调用函数 
  11.     say() //结果:我终于会说话了... 

注:如果函数有返回值,可以不接收。

函数参数特性
在Go中,如果函数参数都是统一类型,可以这样写。

 
 
 
 
  1. //arg1, arg2, arg3, arg4参数类型都是string 
  2. func say(arg1, arg2, arg3, arg4 string) { 
  3.   fmt.Println("我终于会说话了...") 
  4.  
  5. //arg1,arg2参数是int类型,arg4,arg4是string类型, 
  6. func say(arg1, arg2, int, arg3, arg4 string) { 
  7.   //表示arg1, arg2, arg3, arg4参数类型都是string 
  8.   fmt.Println("我终于会说话了...") 

大概意思就是,如果参数不写类型,会以后面碰到的类型为准。

函数的...参数
...参数,也叫可变长参数,有点像Python中的*args。

功能是当不知道接收多少个参数时,接收多的参数会放在...中。

...参数需要放在最后面。

代码

 
 
 
 
  1. package main 
  2.  
  3. import "fmt" 
  4.  
  5. func say(name string, content ...string) { 
  6.     fmt.Println(content)        //结果:[666 双击 ok 哦耶] 
  7.   fmt.Printf("%T\n", content) //结果:[]string,是切片类型 
  8.   fmt.Println("我是"+name, "我说了:") 
  9.   //循环切片 
  10.   for _, v := range content { 
  11.     fmt.Println(v) 
  12.   } 
  13.  
  14.  
  15. func main() { 
  16.   //函数名+括号调用函数 
  17.   say("张三", "666", "双击", "ok", "哦耶") //结果:我终于会说话了... 

结果如图所示

注:参数是...类型的,他的值是一个切片类型。

函数的返回值
返回值是一个的

 
 
 
 
  1. package main 
  2.  
  3. import "fmt" 
  4.  
  5. //返回值是一个 
  6. func say1() string { 
  7.   return "ok" 

返回值是多个的,需要用括号括起来

 
 
 
 
  1. //返回值是多个的,需要用括号括起来 
  2. func say2() (int, string) { 
  3.   return 1, "ok" 

返回值是命名的

 
 
 
 
  1. //返回值是命名的,不管是多个返回值还是一个返回值,都需要括号 
  2. //如果是命名返回值,需要在逻辑代码中,将变量赋值 
  3. func say3() (a int, b string) { 
  4.   //逻辑代码 
  5.   a = 18 
  6.   b = "666" 
  7.   /* 
  8.     直接return即可,不需要retrun a,b 
  9.     return的默认就是 a 和 b 
  10.     不用跟上述返回一样,返回具体值 
  11.   */ 
  12.   return 

main函数

 
 
 
 
  1. func main() { 
  2.   s := say1() 
  3.   fmt.Println(s) 
  4.   a1, b1 := say2() 
  5.   fmt.Println(a1, b1) 
  6.   a2, b2 := say3() 
  7.   fmt.Println(a2, b2) 

结果

总结
上述我们学习了Go基础之函数。

网页标题:一篇文章带你了解Go语言基础之函数(上篇)
URL网址:http://www.gawzjz.com/qtweb2/news30/5030.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联