Go语言之函数
函数就是一块执行特定任务的代码,在输入源的基础上通过一些算法生成预期的输出。
一、函数的声明
Go 语言中的函数声明语法如下:
func 函数名(参数名 类型,参数名 类型)(返回值1类型,返回值2类型){
函数体内容
return 返回值1,返回值2
}
注意:函数中的参数列表和返回值不是必须的
二、函数的定义方式
1、有参数无返回值
func add(a int, b int) {
fmt.Println(a + b)
}
2、有参数无返回值,有多个相同类型参数
func add(a, b int) {
fmt.Println(a + b)
}
3、有参数无返回值,有多个相同类型参数,也有不同类型
func add(a, b int, msg string) {
fmt.Println(a + b)
fmt.Println(msg)
}
4、多个参数,一个返回值
func add(a, b int) int {
return a + b
}
5、多个参数,多个返回值
func add(a, b int) (int, int) {
return a + b, a * b
}
6、命名返回值
func add(a, b int) (c int, d int) {
c = a + b
d = a * b
return // 这个时候不需要在写c,d了
}
7、函数返回值为函数(函数是一等公民,函数可以赋值给变量)
func test() func() {
return func() {
fmt.Println("我是返回函数")
}
}
8、函数返回值为函数,返回的函数带参数
func test() func(msg string) { // 类型只要有不一样的地方,就不是一个类型
return func(msg string) {
fmt.Println(msg)
}
}
9、函数返回值为函数,返回的函数带参数,带返回值
func test() func(a,b int) int{
return func(a,b int) int {
return a+b
}
}
10、函数参数为函数类型,返回值为带参数,带返回值的函数类型
package main
import "fmt"
func main() {
var c = f
a,b := test(c)(3,4)
fmt.Println(a, b)
}
func test(f func()) func(a, b int) (int, int) {
return func(a, b int) (int, int) {
f()
return a + b, a * b
}
}
func f() {
fmt.Println("我是函数参数")
}
11、闭包函数:定义在函数内部,对外部作用域有引用
闭包函数就是多了一种函数传参的方法
func test(age int) func() {
a := func() {
fmt.Println(age)
}
return a // a就是闭包函数
}
12、匿名函数(定义在函数内部的函数,不能是有名函数,头等函数)
var a func()
a = func (){
fmt.Println("我是匿名函数")
}
a()
13、空白符( _ 在Go中被用作空白符,可以用来表示任何类型的任何值)
package main
import "fmt"
func main() {
_, b := test(3, 5)
fmt.Println(b) // 返回 15
}
func test(a, b int) (int, int) {
return a + b, a * b
}
Go语言之函数的更多相关文章
- C语言pow函数编写
C语言pow函数编写 #include<stdio.h> double chaoba(double f,double q); //声明自定义函数 void main(void) { dou ...
- C语言-自定义函数
C语言自定义函数 --1-- 自定义函数定义 1.1 无参无返回值函数 1.2 无参有返回值函数 1.3 有参无返回值函数 1.4 有参有返回值函数 --2-- 函数的参数 2.1 形式参数介绍和使用 ...
- C语言printf()函数:格式化输出函数
C语言printf()函数:格式化输出函数 头文件:#include <stdio.h> printf()函数是最常用的格式化输出函数,其原型为: int printf( char ...
- C语言的函数
"函数"在英文的翻译是"function",无论在自然科学还是计算机科学都是这个词,而"function"的本意是"功能" ...
- c语言main函数返回值、参数详解(返回值是必须的,0表示正常退出)
C语言Main函数返回值 main函数的返回值,用于说明程序的退出状态.如果返回0,则代表程序正常退出:返回其它数字的含义则由系统决定.通常,返回非零代表程序异常退出. 很多人甚至市面上的一些书籍,都 ...
- Go语言示例-函数返回多个值
Go语言中函数可以返回多个值,这和其它编程语言有很大的不同.对于有其它语言编程经验的人来说,最大的障碍不是学习这个特性,而是很难想到去使用这个特性. 简单如交换两个数值的例子: package mai ...
- 【学习笔记】【C语言】函数
一. 什么是函数 任何一个C语言程序都是由一个或者多个程序段(小程序)构成的,每个程序段都有自己的功能,我们一般称这些程序段为“函数”.所以,你可以说C语言程序是由函数构成的. 比如你用C语言编写了一 ...
- 【转载】 c语言inline函数的使用
c语言inline函数的使用 转载自:http://blog.chinaunix.net/uid-21843265-id-3056446.html 大学在教科书上学习过inline函数,定义为inli ...
- 【C语言】函数和自定义函数
函数,我之前也提到过一点点内容.其实函数是很好理解的,但是写起来又十分麻烦. 一. 函数引入 我们知道,C源程序是由函数组成的.请看下面的简单函数例子 #include <stdio.h ...
- c语言中函数的简单介绍
c语言中函数的介绍: 函数,简单的说就是代码的打包.存放在一个地方,当需要的时候调用. 函数分类: 1.无参无返回值函数 void func() 2.无参有返回值函数 int func() 3.有参 ...
随机推荐
- 十五:JDBC学习入门
一.JDBC相关概念介绍 1.1.数据库驱动 这里的驱动的概念和平时听到的那种驱动的概念是一样的,比如平时购买的声卡,网卡直接插到计算机上面是不能用的,必须要安装相应的驱动程序之后才能够使用声卡和网卡 ...
- yum 和 epel 的详解
一.概览 1.什么是repo文件 repo文件是Fedora中yum源(软件仓库)的配置文件,通常一个repo文件定义了一个或者多个软件仓库的细节内容,例如我们将从哪里下载需要安装或者升级的软件包,r ...
- mzy git学习,git推送到远程库(八)
git在同步到远程库 关于git中多个用户切换的事情: 完全使用账户密码策略连接远程库: 之前一直尝试在本地切换多个用户,发现一直不行,很奇怪?后面发现必须要去win10的凭据管理器删除当前git的凭 ...
- Mybatis原理和代码剖析
参考资料(官方) Mybatis官方文档: https://mybatis.org/mybatis-3/ Mybatis-Parent : https://github.com/mybatis/par ...
- sublime text build system automatic ctrl/cmd+B自动选择 python2 或 python3
背景 我同时安装了 python2 和 python3 时,python 指向 python2,python3 才是 python3 默认情况下,在 Sublime 内 Ctrl/Cmd + B 运行 ...
- How to check type of files without extensions in python? 不通过文件扩展名,怎样知道文件类型?
有一个命令 file 可以用 $ file fuck fuck.png: PNG image data, 1122 x 750, 8-bit colormap, non-interlaced pyth ...
- 复习&反思
阴间题目 半夜 糖果 Cicada 与排序 排列 Cover 玩具 夜莺与玫瑰 God Knows 简单的填数 反思 20210826 Lighthouse,Miner,Lyk Love painti ...
- TCP可靠传输原理
停止等待协议 "停止等待"就是发送方在发送完一个分组后停止发送,等待接收方的确认后再继续发送. 超时重传 发送方在等待一定时间后如果还没有收到接收方的确认,此时发送方将认定分组没有 ...
- openswan协商流程之(二):main_inI1_outR1()
主模式第二包:main_inI1_outR1() 文章目录 主模式第二包:main_inI1_outR1() 1. 序言 2. `main_inI1_outR1()`处理流程图 3. `main_in ...
- 《NAT穿越(NAT-T)RFC3947文档》记录