GO语言不固定参数函数与匿名函数的使用
作者:White--Night 时间:2024-02-17 14:42:17
不固定参数函数
在go语言中,允许对函数设置不固定参数。不过需要注意的是,虽然不限制参数数量,但限制了参数的数据类型。
从原理分析,不固定参数利用了切片的解包。切片(或称动态数组)的详细用法可去了解下切片的相关知识点。
不固定参数的应用实例如下
package main
import "fmt"
func test(numbers ...interface{}) {
for _, k := range numbers {
fmt.Printf("%v\n", k)
}
}
func main() {
var name = []string{"Alice", "Bob"}
var m = map[string]interface{}{"name": "Alice", "age": 10}
test(10, "Bob", name, m)
}
在上面这段程序中,我们先来看看main函数。可以看到,我们向test中分别传入了四个不同类型的变量:整型,字符串,切片和接口(interface)(接口也是一种数据类型,当然可以作为参数传递)。
再看看test函数,我们定义了一个接口类型的变量numbers,用“..."来代表”我们不确定这个函数要接收多少参数,所以用...来表示我们要接受n个参数”。不过我们传进去的参数类型还是不变的,将%v改成%T看看类型就知道了,结果为
int
string
[]string
map[string]interface {}
当然,是因为我们往函数里传了四个不同类型的参数,才需要将函数变量定义为接口类型。假设我们传的都是单一类型的变量就就不用了。例子如下
package main
import "fmt"
func test(numbers ...int) {
for _, k := range numbers {
fmt.Printf("%v\n", k)
}
}
func main() {
test(1, 2, 3, 4)
}
运行结果为
1
2
3
4
匿名函数
Go语言中,函数可以没有具体的函数名,并将整个函数作为变量去使用。使用方法有两种:函数定义并使用,函数以函数变量表示。
其实就是把这个函数执行后的返回值当作变量去用,相当于先执行一次该函数,再把该函数的返回值去赋给其他变量或当作参数去传入函数。比较简单,使用例如下。
package main
import "fmt"
func testTwo(tmp int) int {
return tmp * 3
}
func main() {
test := func(tmp int) int {
return tmp * 2
}
fmt.Printf("%v\n", test(10))
fmt.Printf("%v\n", testTwo(test(10)))
}
来源:https://blog.csdn.net/white_night_SZTU/article/details/129558907
标签:GO语言,不固定参数函数,匿名函数
0
投稿
猜你喜欢
Vue中导入excel文件的两种方式及使用步骤
2024-05-21 10:16:20
Django中使用Celery的教程详解
2023-07-12 05:08:35
MySQL安全性指南(3)(转)
2010-07-26 13:07:00
SQL+HTML+PHP 一个简单论坛网站的综合开发案例(注册、登录、注销、修改信息、留言等)
2023-06-14 15:54:17
深入探究Go语言从反射到元编程的实践与探讨
2024-05-22 10:28:50
SQL Server简单模式下误删除堆表记录恢复方法(绕过页眉校验)
2024-01-15 00:18:11
css利用锚点控制翻页
2008-07-17 13:12:00
JavaScript链式调用的设计
2009-12-04 12:46:00
纯JS单页面赛车游戏制作代码分享
2024-02-23 14:10:17
python对文档中元素删除,替换操作
2023-08-30 11:28:20
HTML5 的五个激动人心的特性
2009-01-02 17:36:00
MySQL慢sql优化思路详细讲解
2024-01-18 03:51:43
超常用的PHP正则表达式收集整理
2024-05-03 15:35:57
Windows 2003服务器上传文件受限制的解决方法
2011-02-14 11:29:00
用python实现将数组元素按从小到大的顺序排列方法
2022-01-07 22:03:25
MySQL ALTER命令使用详解
2024-01-18 09:40:23
Scrapy-Redis结合POST请求获取数据的方法示例
2023-08-25 06:31:56
Python Django 封装分页成通用的模块详解
2023-06-24 13:56:15
python实现图像识别功能
2023-08-09 08:45:00
Go语言实现简单的一个静态WEB服务器
2024-04-28 09:12:56