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.有参 ...
随机推荐
- 【maven】入门教程
一:Maven简介 1.Maven是什么? 是一个跨平台的项目管理工具.使用java语言开发(Maven 3.3+ require JDK 1.7 or above to execute)2. 为什么 ...
- struts2思想学习(一)
OOP 面向对象编程 AOP 面向切面编程 而在struts2 处处体现了面向切面编程的思想(动态代理最典型)! 拦截器其实也是面向切面编程!拦截器切断了所有请求到action的操作 并做了很多的前提 ...
- 参数化SQL
原文:http://www.cnblogs.com/aito/archive/2010/08/25/1808569.html 避免SQL注入的方法有两种:一是所有的SQL语句都存放在存储过程中,这样不 ...
- Java编码的问题
<转> 由于JDK是国际版的,在编译的时候,如果我们没有用-encoding参数指定我们的Java源程序的编码格式,则javac.exe首先获得我们操作系统默认采用的编码格式,也即在编译j ...
- ProjectEuler 007题
题目:By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that the 6th prime is ...
- 工作多年后再来聊聊IO
IO模型 IO是Input/Output的缩写.Linix网络编程中有五种IO模型: blocking IO(阻塞IO) nonblocking IO(非阻塞IO) IO multiplexing(多 ...
- SpringMVC IO 文件上传
1 public class FileUtil { 2 3 4 /** 5 * 读取文件内容,作为字符串返回 6 */ 7 public static String readFileAsString( ...
- NVidia Jetson Ubuntu 18.04 安装ROS过程中运行sudo rosdep init指令出错
参考:https://www.cnblogs.com/xuhaoforwards/p/9399744.html 安装ROS过程中运行sudo rosdep init后,出现如下错误LOG: ERROR ...
- JavaScript——数组——slice方法
JavaScript--数组--slice方法 JavaScript中的slice方法类似于字符串的substring方法,作用是对数组进行截取. slice方法有两个参数,indexStart 和 ...
- JDK1.8源码(八)——java.lang.ThreadLocal类
https://www.cnblogs.com/xdd666/p/14734047.html ThreadLocal https://www.cnblogs.com/yanfei1819/p/1473 ...