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.有参 ...
随机推荐
- spring框架学习日志一
一.简介 1.对spring框架的简单理解 可以理解为它是一个管理对象的创建.依赖.销毁的容器 Spring 是一个开源框架. Spring 为简化企业级应用开发而生. 使用 Spring 可以使简单 ...
- mybatis学习日志之总结
一.介绍mybatis MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名 ...
- uwp 的work project 的 取消闹钟
private void initalAlarmHanle() { string cancelAlarm = "CancelAlarmEvent"; ConnectionManag ...
- Difference between trustStore and keyStore in Java - SSL
Difference between trustStore and keyStore in Java - SSL trustStore vs keyStore in Java trustStore ...
- 关于在mysql和oracle中编码对varchar等类型的影响
今天在测试oracle的时候发现,我用varchar2(10),的字段,居然存不下"凯尔特人"四个字符:和我在学习mysql中显然是不一样的,查阅资料发现: mysql 5.0 之 ...
- NLP与深度学习(二)循环神经网络
1. 循环神经网络 在介绍循环神经网络之前,我们先考虑一个大家阅读文章的场景.一般在阅读一个句子时,我们是一个字或是一个词的阅读,而在阅读的同时,我们能够记住前几个词或是前几句的内容.这样我们便能理解 ...
- WebStorm 2018.3.2 激活方式(永久)
其他版本下载:https://www.jetbrains.com/webstorm/download/other.html 这个适合2018.3.2 第一步:下载补丁包(jar)链接:https:// ...
- 微信小程序--聊天室小程序(云开发)
微信小程序 -- 聊天室小程序(云开发) 从微信小程序开发社区更新watch接口之后,一直在构思这个项目.项目已经完成很久,但是一直都没有空写一篇博客记录展示一下. 开源地址 wx-cloud-im: ...
- 发布日志 - kratos v2.0.4 版本发布
V2.0.4 Release Release v2.0.4 · go-kratos/kratos (github.com) 新的功能 proto-gen-http 工具在生产代码时如果 POST/PU ...
- Mac OS ssh 禁用密码登陆
$ sudo vim /etc/ssh/sshd_config PubkeyAuthentication yes PasswordAuthentication no UsePAM no then: $ ...