zoukankan      html  css  js  c++  java
  • 区块链基础语言(十三)——Go语言函数(上)

    函数这一章节主要分为五个部分讲解,分别为:内置函数、自定义函数、变量作用域、匿名函数与闭包、递归函数。本节讲解内置函数、自定义函数和变量作用域。

    一、内置函数

    1.1 常见的内置函数常见的内置函数如表1所示。

    1.2 内置函数的调用过程

    1.2.1 步骤

    第一步:先导入该函数所在的包;
    第二步:再调用,调用格式为:包名.函数名

    1.2.2 示例

    二、自定义函数

    2.1 定义格式

    注:
    a. 函数是基本的代码块,用于执行一个任务。Go语言通过函数来划分任务,不同功能的函数执行的是指定的任务;
    b. Go语言最少有一个main()函数;
    c. 函数由关键字 func 开始声明,函数声明告诉了编译器函数的名称,返回参数和类型;
    d. FuncName即函数名称,根据约定:函数名首字母小写即private,只能在本包里使用;大写即public,可以被外部包调用;
    e. 返回类型:
    ① 上面返回值声明了两个变量名a和b(命名返回参数),变量名不是必须需要,可以只有类型没有变量名;
    ② 如果只有一个返回值且不声明返回值变量,可以省略变量名和返回值的括号,保留变量类型;
    ③ 如果没有返回值,那么就直接省略最后的返回信息。如果有返回值,那么必须在函数的内部添加return语句。

    2.2 函数参数

    2.2.1 参数分类

    函数参数可以分为形式参数和实际参数两类,如表2所示。

    函数的形参和实参具有以下特点:
    a. 形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只有在函数内部有效。函数调用结束返回主调函数后则不能再使用该形参变量。
    b. 实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使实参获得确定值。
    c. 实参和形参在数量上、类型上、顺序上应严格一致,否则会发生类型不匹配的错误。
    d. 函数调用中发生的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化。

    2.2.2 参数传递

    参数传递分为值传递和引用传递,如表3所示。

    值传递和引用传递的示例如下:

    2.2.3 参数种类

    实参可以是常量、变量、函数,也可以是数组、切片,但必须是确定的值。数组和切片在后面章节再做介绍,常量、变量在前面章节已经介绍过,这里主要介绍函数作为参数的情况:

    2.3 自定义函数种类

    2.3.1 无参无返值

    无参无返回值就是既没有传入参数,也没有返回值。

    2.3.2 有参无返回值

    有参无返回值就是有传入的参数,没有返回值。a. 普通参数列表

    b. 不定参数列表
    形如“… type”格式的类型只能作为函数的参数类型存在,“… type”本质上是切片。

    2.3.3 无参有返回值

    没有传入参数、有返回值的函数,必须有明确的终止语句,否则会引发编译错误。return 语句可以跳出当前函数。
    a. 一个返回值

    b. 多个返回值

    2.3.4 有参与返回值

    有参有返回值就是有传入的参数,有返回值。

    三、变量作用域

    3.1 变量作用域的分类

    变量作用域指的是变量在源代码中的作用范围。根据其作用范围,分为两种:局部变量和全局变量,如表4所示。

    3.2 不同作用域的同名变量的访问原则

    a. 在同一个作用域内,就近访问最近的变量;
    b. 如果此作用域没有此变量声明,则访问全局变量;
    c. 如果全局变量也没有,则报错。

    3.3 示例

    参考资料
    [1] 

  • 相关阅读:
    Go语言 go get 找不到 google.golang.org/protobuf/encoding/prototext 解决办法
    golang.org/x包无法下载
    mqtt服务压力测试
    go-test知识点
    多线程并发
    elasticsearch-基础查询语法整理
    go 代码依赖管理工具mod使用
    微服务软件架构设计
    docker搭建mysql
    服务docker化
  • 原文地址:https://www.cnblogs.com/efish/p/go-language-function.html
Copyright © 2011-2022 走看看