Golang函数-函数的基本概念

                             作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.函数的概述

1>.函数定义语法格式

  Go语言函数定义格式如下:
    func 函数名( 函数参数列表 ) 返回值列表 {
    函数体
    return 返回值列表
    }   关于函数定义的名词解释:
    函数名:
      顾名思义,就是定义函数的名字,方便用户多次调用,函数名其实你完全理解成一个标识符,因此函数名的命名规范也需要遵循标识符的命名规范,详情请参考我之前的笔记:https://www.cnblogs.com/yinzhengjie2020/p/12244384.html。
      
    形参列表:
      在定义函数时指定的形参,在未出现函数调用时,它们并不占内存的存储单元,因此称它们是形式参数或虚拟参数,简称形参,表示它们并不是实际存在的数据,所以,形参里的变量不能像python那样不能赋默认值。     返回值列表:
      主要定义定义返回值的类型和个数。     函数体:
      即定义调用该函数要执行的源代码。     返回值:
      函数的返回值是通过函数中的return语句获得的,return后面的值也可以是一个表达式,只要返回值类型和定义的返回值列表所匹配即可。Go语言支持多个返回值。

2>.实参和形参

  形参出现在函数定义中,在整个函数内部都可以使用,离开该函数则不能使用;

  实参出现在主调函数中,进入被调函数后,实参也不能使用;

  实参变量对形参变量的数据传递是"值传递",即单向传递,只由实参单向传递给形参,而形参不能传回来给实参;   在调用函数时,编译系统临时会给形参分配存储单元。调用结束后,形参单元被释放;   实参单元与形参单元是不同的单元。调用结束后,形参单元被释放,函数调用结束返回主调函数后则不能再使用该形参变量。实参单元仍保留并维持原值。因此,在执行一个被调用函数时,形参的值如果发生变化,并不会改变主调函数中实参的值。   特此声明:上面关于形参的值描述指的是基础数据类型,而复合类型(有的语言称为)在后续的学习中你会发现有一定的差异,不用担心,在后面的笔记分享中你会慢慢体会到其中的奥妙~

3>.函数的返回值

  保证return语句中表达式的值和函数返回类型是同一类型,如果函数返回的类型和return语句中表达式的值不一致,程序则会报错;

  return语句的另一个作用为中断return所在的执行函数;

  如果函数带返回值,return后面必须跟着值

二.函数的基本使用

1>.定义一个加法函数,接收2个int类型的函数返回2个int相加的结果

package main

import (
"fmt"
) func add(a int, b int) (sum int) {
sum = a + b
return sum
} func main() { x :=
y := res := add(x, y) fmt.Printf("x + y = %d\n", res)
}

2>.Go语言常用系统函数使用

  博主推荐阅读:
    https://www.cnblogs.com/yinzhengjie/p/12208030.html
    https://www.cnblogs.com/yinzhengjie/p/12203765.html

Golang函数-函数的基本概念的更多相关文章

  1. golang的函数

    在golang中, 函数是第一类值(first-class object), 即函数可以赋值与被赋值. 换言之, 函数也可以作为ReceiverType, 定义自己的method. 实例: http. ...

  2. 分位函数(四分位数)概念与pandas中的quantile函数

    p分位函数(四分位数)概念与pandas中的quantile函数 函数原型 DataFrame.quantile(q=0.5, axis=0, numeric_only=True, interpola ...

  3. python函数中闭包的概念说明

    函数中闭包的概念说明 闭包: 内层函数对外层函数非全局变量的引用,就叫做闭包 判断闭包方法 ._closure_ : 执行后返回有效信息就是闭包,返回none就不是闭包 举例1: 是闭包 def wr ...

  4. golang(06)函数介绍

    原文链接 http://www.limerence2017.com/2019/09/11/golang11/#more 函数简介 函数是编程语言中不可缺少的部分,在golang这门语言中函数是一等公民 ...

  5. Python第六章-函数01-函数的概念和使用

    函数 为了便于程序的维护和更好的实现模块化,好的程序都会分解为很多函数. 可以这么说,对于任何的编程语言,函数都是一个非常重要的概念. python 不仅简化了函数的定义过程,而且还大量借鉴了其他函数 ...

  6. golang:函数总结

    golang保留的函数 init(), main()是golang的保留函数,有如下特点: main() 只能用在main包中,仅可定义一个,init() 可定义任意包,可重复定义,建议只定义一个 两 ...

  7. JavaScript 引入方式 语言规范 语言基础 数据类型 常用方法 数组 if_else 比较运算符 for while 函数 函数的全局变量和局部变量 {Javascript学习}

    Javascript学习 JavaScript概述 ECMAScript和JavaScript的关系 1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScript ...

  8. Golang(二)基本概念

    类型 18个基本类型:bool.string.rune.byte.int.uint.int8.uint.int8.int16.uint16.int32.uint32.int64.uint64.floa ...

  9. python函数-函数初识

    python函数-函数初识 1.函数的定义 语法 def 函数名(参数1,参数2,参数3,...): '''注释''' 函数体 return 返回的值 2.函数的使用原则---先定义后调用 #定义阶段 ...

随机推荐

  1. vim锁定,不能动

    在vim中 ctrl+s是锁屏命令, ctrl+q是解锁

  2. yolo系列目标检测+自标注数据集进行目标识别

    1. yolov1的识别原理 参考:https://blog.csdn.net/u010712012/article/details/85116365 https://blog.csdn.net/gb ...

  3. maven缺失ojdbc6解决方案 :Missing artifact com.oracle:ojdbc6:jar:11.2.0.1.0问题解决 ojdbc包pom.xml出错

    问题已解决,感谢博主,给您磕头了. | | 解决方法就是把缺少的 jar 手动添加到本地仓库中,再重新引入依赖即可.详情请参考以下链接. | | 转发自: https://blog.csdn.net/ ...

  4. luogu P2774 方格取数问题

    有限制的问题,显然考虑全选再根据限制去掉的想法较优,我们发现一个点四周的点受限,其x或者y差一,也就是说奇偶性不同,那我们可以将其分成白点和黑点,就变成了最小割的问题,将每个白点向受限制的黑点连边,c ...

  5. CSS - icon图标(icon font)

    1. 概念 这个小红点是图标,图标在CSS中实际上是字体. 2. 为什么出现本质是字体的图标? 2.1 图片增加了总文件的大小. 2.2 图片增加了额外的http请求,大大降低网页的性能. 2.3 图 ...

  6. ubuntu14 安装Sublime Text 3

    Step1 从官网下载Sublime Text3 安装包 sublime_text_3_build_3176_x64.tar.bz2,如果有网络问题,请挂VPN或者从其他地方下载. 拷贝至/home/ ...

  7. Python 爬取 北京市政府首都之窗信件列表-[后续补充]

    日期:2020.01.23 博客期:131 星期四 [本博客的代码如若要使用,请在下方评论区留言,之后再用(就是跟我说一声)] //博客总体说明 1.准备工作 2.爬取工作(本期博客) 3.数据处理 ...

  8. HTML的几个注意点

    一.HTML 1.HTML5有哪些新特性?新增的标签有哪些? 新特性: 语义标签——语义化标签使得页面的内容结构化,见名知义 增强型表单——拥有多个新的表单 Input 输入类型.这些新特性提供了更好 ...

  9. JAVA字符串与整形、浮点类型之间的相互转换总结

    1.字符串转化为整形.浮点类型 String s = "100"; //方法一 int a = Integer.parseInt(String s); Long.parseLong ...

  10. Java中很少用的CopyOnWriteArrayList

    类注释 /** * A thread-safe variant of {@link java.util.ArrayList} in which all mutative * operations ({ ...