Go语言入门教程(十一)
欢迎来到阿八个人博客网站。本 阿八个人博客 网站提供最新的站长新闻,各种互联网资讯。 喜欢本站的朋友可以收藏本站,或者加QQ:我们大家一起来交流技术! URL链接:https://www.abboke.com/jsh/2019/1010/116404.html
原创: IT干货栈
有过编程经验的小伙伴可能发现了,这样的编程语法其实是和JavaScript相差不大的 对于函数的调用或是定义都和其他语言有点区别,如果慢慢熟悉这种语法了,其实也会觉得go语言是一门很好的入门,且性能很高的语言类型 为什么会这么说性能很高呢,因为go语言内置了性能测试包提供了很多三方库进行协助我们对代码进行调优工作 所以只要我们善于使用三方库,善于学习,肯定会写出高质量,高可用,高性能的代码啦 二、函数之无参多个返回值 顾名思义,多个返回值就是利用Go语言处理程序后返回多个值,但在实战开发的时候,我们一般是使用两个返回值,一个是我们需要返回的处理后的结果,另一个就是错误err 三、函数之有参返回值 四、函数之递归函数 递归指函数可以直接或间接的调用自身 所谓跳出条件就是根据传入的参数判断是否需要停止递归,而递归体则是函数自身所做的一些处理 我们现在来通过循环实现1+2+3……+100的相加求和例子 我们用了三种方式来进行实现这个例子,一种是普通的for循环相加,我们在代码中已经定死了100的常数 假如我们做成99的相加的话,那么就得改代码,所以实用性不高 另一种是关于进行传参,我们传入100作为最终的计算数字,如果我们想做成50的相加,那么也只需要改变传参,可用性较高 最后用的是初始传参,虽然是可以做为100以内的计算,但如果我们改成101的呢? 他是不是会一直计算下去导致内存溢出呢?所以我们在编写代码的时候,也是需要大家能够多想一下,毕竟这个也是需要经验的积累的一个过程 好了,今天的分享就到这里啦,我们主要分享了一下关于go语言的无参,有参 和递归函数,下一期我们继续分享关于go语言的函数类型 我是小栈君,如果你喜欢我的分享,麻烦你点击一个好看,转发或分享,当然也可以后台私信给我哦 这里每天会分享包含java,go,Python,大数据,人工智能的相关干货,我们一起提高,一起进步
方便我们进行异常处理//方式1func Test01() (int, string) { return 520, "it干货栈"} //方式2, 给返回值命名func Test02() (a int, str string) { a = 520 str = "it干货栈" return}func main() { v1, v2 := Test01() //函数调用 _, v3 := Test02() //函数调用, 第一个返回值丢弃 v4, _ := Test02() //函数调用, 第二个返回值丢弃 fmt.Printf("v1 = %d, v2 = %s, v3 = %s, v4 = %d\n", v1, v2, v3, v4)}
//求2个数的和差func SumAndSubtract(num1 int, num2 int) (sun int, subtract int) { return num1 +num2 ,num1-num2}func main() { min, max := SumAndSubtract(33, 22) fmt.Printf("min = %d, max = %d\n", min, max) //sum = 55, subtract = 11}
递归函数通常有相同的结构:一个跳出条件和一个递归体
在编程语言中特别是对于树形结构中我们常常使用的是关于递归的操作// 普通实现,利用循环进行累加func Test01() int { i := 1 sum := 0 for i = 1; i <= 100; i++ { sum += i } return sum}//通过递归实现1+2+3……+100func Test02(num int) int { if num == 1 { return 1 } return num + Test02(num-1) //函数调用本身}//通过递归实现1+2+3……+100func Test03(num int) int { if num == 100 { return 100 } return num + Test03(num+1) //函数调用本身}func main() { fmt.Println(Test01()) //5050 fmt.Println(Test02(100)) //5050 fmt.Println(Test03(1)) //5050}
我是小栈君,我们明天再见,拜了个拜相关文章