Go语言入门教程(十一)

原创: IT干货栈

Hello,各位小伙伴大家好,我是小栈君,昨天讲了关于go语言的函数的定义和自定函数的部分种类,我们今天接着上期所讲的内容继续进行分享。

一、函数之无参有返回值

有返回值的函数,必须有明确的终止语句,否则会引发编译错误。所以在有返回值的函数中需要使用关键字 return 。

他可以是一个或者多个返回值。官方建议:最好命名返回值,因为不命名返回值,虽然使得代码更加简洁了,但是会造成生成的文档可读性差。

 //方式1
func Test01() int {
        return 250
}

 //方式2, 给返回值命名
func Test02() (a int) {
        a = 250
        return a
}
//方式3, 给返回值命名
func Test03() (value int) {
        value = 250
        return
}

func main() {
        v1 := Test01() //函数调用
        v2 := Test02() //函数调用
        v3 := Test03() //函数调用
        fmt.Printf("v1 = %d, v2 = %d, v3 = %d\n", v1, v2, v3)
}

有过编程经验的小伙伴可能发现了,这样的编程语法其实是和JavaScript相差不大的。

对于函数的调用或是定义都和其他语言有点区别,如果慢慢熟悉这种语法了,其实也会觉得go语言是一门很好的入门,且性能很高的语言类型。

为什么会这么说性能很高呢,因为go语言内置了性能测试包提供了很多三方库进行协助我们对代码进行调优工作。

所以只要我们善于使用三方库,善于学习,肯定会写出高质量,高可用,高性能的代码啦。

二、函数之无参多个返回值

顾名思义,多个返回值就是利用Go语言处理程序后返回多个值,但在实战开发的时候,我们一般是使用两个返回值,一个是我们需要返回的处理后的结果,另一个就是错误err。方便我们进行异常处理。

//方式1
func 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
}

四、函数之递归函数

递归指函数可以直接或间接的调用自身。递归函数通常有相同的结构:一个跳出条件和一个递归体。

所谓跳出条件就是根据传入的参数判断是否需要停止递归,而递归体则是函数自身所做的一些处理。在编程语言中特别是对于树形结构中我们常常使用的是关于递归的操作。

我们现在来通过循环实现1+2+3……+100的相加求和例子

// 普通实现,利用循环进行累加
func Test01() int {
        i := 1
        sum := 0
        for i = 1; i <= 100; i++ {
                sum += i
        }

        return sum
}

//通过递归实现1+2+3……+100
func Test02(num int) int {
        if num == 1 {
                return 1
        }
        return num + Test02(num-1) //函数调用本身
}

//通过递归实现1+2+3……+100
func 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
}

我们用了三种方式来进行实现这个例子,一种是普通的for循环相加,我们在代码中已经定死了100的常数。

假如我们做成99的相加的话,那么就得改代码,所以实用性不高。

另一种是关于进行传参,我们传入100作为最终的计算数字,如果我们想做成50的相加,那么也只需要改变传参,可用性较高。

最后用的是初始传参,虽然是可以做为100以内的计算,但如果我们改成101的呢?

他是不是会一直计算下去导致内存溢出呢?所以我们在编写代码的时候,也是需要大家能够多想一下,毕竟这个也是需要经验的积累的一个过程。

好了,今天的分享就到这里啦,我们主要分享了一下关于go语言的无参,有参 和递归函数,下一期我们继续分享关于go语言的函数类型。

我是小栈君,如果你喜欢我的分享,麻烦你点击一个好看,转发或分享,当然也可以后台私信给我哦。

这里每天会分享包含java,go,Python,大数据,人工智能的相关干货,我们一起提高,一起进步。我是小栈君,我们明天再见,拜了个拜。

原文地址:https://www.cnblogs.com/it-carry/p/11645706.html

时间: 2024-08-30 07:47:52

Go语言入门教程(十一)的相关文章

哪有python开发语言入门教程免费下载?

人工智能时代,如果不想被机器人取代,最应该掌握的是编程.Python作为连续10年最受欢迎的编程语言,不但能开发Google .豆瓣等大型网站,还是人工智能领域的第一语言.那么,我猜你想问哪里有python开发语言入门教程. 千锋Python基础教程:http://pan.baidu.com/s/1qYTZiNE Python课程教学高手晋级视频总目录:http://pan.baidu.com/s/1hrXwY8k Python课程windows知识点:http://pan.baidu.com/

C语言入门教程-(5)格式化输入输出

1.输入和输出 在程序的使用中,我们经常可以看的这么一个场景:用户需要输入数据,经过程序运算,得到结果后输出.在C语言中,输入数据和输出数据都是由库函数完成的,通过语句来输入/输出. 2.格式化输出-printf()函数 C语言程序运算的结果在内存中,我们需要将其输出到指定设备中,我们才可以看到数据.printf是print format的缩写,意思是"格式化打印"."打印"的意思就是在屏幕上显示内容,所以我们称printf是格式化输出. 2.1 printf()函

C语言编程:一本全面的C语言入门教程(第三版)PDF下载

网盘下载地址:C语言编程:一本全面的C语言入门教程(第三版)PDF下载 – 易分享电子书PDF资源网 作者: (美)Stephen Kochan 出版社: 电子社博文视点资讯有限公司 译者: 张小潘 出版年: 2006年 页数: 543 页 定价: 59.00元 装帧: 平装 ISBN: 9787121007354 内容简介 · · · · · · 本书是极负盛名的C语言入门经典教材,其第一版发行至今已有20年的历史.本书内容详实全面,由浅入深,示例丰富,并在每个章节后面附有部分习题,非常适合读

RabbitMQ入门教程(十一):消息属性Properties

原文:RabbitMQ入门教程(十一):消息属性Properties 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/vbirdbest/article/details/78698364 分享一个朋友的人工智能教程.比较通俗易懂,风趣幽默,感兴趣的朋友可以去看看. 简介 发送消息可以为消息指定一些参数 Delivery mode: 是否持久化,1 - Non-persistent,2 -

HTML语言入门教程

HTML入门教程 什么是 HTML 语言         HTML(HyperText MarkUp language)是使用特殊标记来描述文档结构和表现形式的一种语言.(它可以用任何一种编译器编译,因为它就是一种纯文本文件) HTML是什么样的 HTML语法就是给文本加上表明文本含义的标签(Tag),让用户(人或者程序)能对文本得到更好的理解.下面是一个最简单的HTML文档:       所有的HTML文档都应该有一个<html>标签,<html>标签包括两个部分:<hea

Java语言入门教程

(一) Java言语入门教程Java类的组成一向很喜欢一句广告词:日子即是一个七天又一个七天.而我想说的 是,Java运用就是一个类又一个类.Java是面向目标的言语,目标都是由类实例化而来.一个Java运用,不管简略仍是杂乱,都是由若干个Java类 组成的.因而,关于初学者,先知道Java类的组成是必要的. Java类的组成首要有3有些:数据成员.结构办法.办法成员. 首要看下边的代码,是一个简略的Java类: package com.csst.vo; public class Custome

C语言入门教程-(4)常量和变量

1.常量和变量的概念 程序执行过程中其值不能发生改变的量叫做常量,其值能发生改变的量叫做变量.常量可以直接使用,而变量则必须先定义后才能使用,否则编译器会报错. 2.常量和变量的命名规范 在介绍常量和变量的命名规范之前,我们先了解一下什么是标识符和关键字. 1)标识符 标识符,用来标识符号常量名.变量名.函数名.数组名.文件名.类名.对象名等.简单的将就是大家取的名字~~有效标识符的构成规则如下: 1)第一个字符必须是字母(大小写都行)或下划线,不能是数字; 2)后跟字母(大小写都行).下划线或

嵌入式linux C语言入门教程

假设你已经学会了基本的C语言语法.1.编程的一般过程. 1)设计整个程序的框架.在开始编写程序源代码之前,你要根据需求对整个程序进行设计.程序通常是由多个模块组成的,也许你负责的也只是一个程序中的一个模块,当然你也可以将模块再分为几个子模块,直到你认为不需再分.需要模块定义与其他模块的接口,通常是.h头文件.不必强求很细致的设计,可以在编程和调试过程中补充. 2)按照框架编写源代码.一般会在编程过程中发现之前设计的不合理处,加以修改.有时可以在编写一个(子)模块后,编写简单的测试程序检验和调试一

C语言入门教程-(6)运算符

1.运算符概述 运算符是一种编译器执行特定的数学或逻辑操作的符号.C语言提供了以下类型的运算符: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 条件运算符 其他运算符 2.算术运算符 算术运算符分为单目运算符和双目运算符,单目运算符表示只需要一个操作数,双目运算符需要两个操作数. 2.1 双目算术运算符 1)+ :加法,把两个操作数相加 2)- :减法,从第一个操作数中减去第二个操作数 3)* :乘法,把两个操作数相乘 4)/ :除法,第一个操作数除以第二个操作数 5)% :求模(取