重温Go语法笔记 | 函数
- 函数
- 返回值带有变量名
return时可以不写返回值,在返回值位置声明即可
func namedRetvalue() (a, b int) {
a = 1
b = 2
return
}
- 匿名函数
- 定义时调用
func(data int) {
fmt.Println(data)
}(100)
- 匿名函数被赋值与调用
f := func(data int) {
fmt.Println(data)
}
f(100)
- 匿名函数作为回调函数
func visit(list []int, f func(int)) {
for -, v := raneg list{
f(v)
}
} visit([]int{1,2,3,4}, func(v int){
fmt.Println(v)
})
- 定义时调用
- 可变参数
func myfunc(args ...int) {
for -, arg := range args {
fmt.Println(arg)
}
}
任意类型的可变参数
func myfunc(args ...interface{}) {
var typeString string
// 类型断言
for _, s := range args {
switch s.(type) {
case bool:
typeString = "bool"
case string:
typeString = "string"
case int:
typeString = "int"
}
}
fmt.Println(typeString)
} func main() {
myfunc(1, "a", true)
}
- defer延迟语句
后进先出
函数退出时,释放资源func main() {
defer fmt.Println(1)
defer fmt.Println(2)
defer fmt.Println(3)
}
var (
cMap = make(map[string]int)
cMutex sync.Mutex
) func myfunc(key string) int {
cMutex.Lock()
defer cMutex.Unlock()
return cMap[key]
} func main() {
ret := myfunc("A")
fmt.Println(ret)
}
- Go运行时错误
1.一个可能造成错误的函数,需要返回一个错误接口 error
2.函数调用后需要检查错误,正确处理每一个可能发生的错误的函数
3.实现Error() string 方法的接口
4.errors包自定义错误,errors.New("error")
- panic与recover
panic会引发程序崩溃,一般用于严重的错误
recover只在延迟函数defer中有效,调用recover捕获panic的输入值func RecoverPanic(entry func()) {
defer func() {
err := recover() switch err.(type) {
case runtime.Error:
fmt.Println(err)
default:
fmt.Println(err)
}
}()
entry()
}
- 哈希函数
- md5/sha-1
import (
"crypto/md5"
"crypto/sha1"
) func main() {
cString := "Hello, 世界"
md5Ins := md5.New()
md5Ins.Write([]byte(cString))
result := md5Ins.Sum([]byte(""))
println(result)
sha1Ins := sha1.New()
sha1Ins.Write([]byte(cString))
result = sha1Ins.Sum([]byte(""))
println(result)
}
- md5/sha-1
- 返回值带有变量名
重温Go语法笔记 | 函数的更多相关文章
- SQL基础语法笔记教程整理
PS:本文适用SQL Server2008语法. 一.关系型数据库和SQL 实际上准确的讲,SQL是一门语言,而不是一个数据库. 什么是SQL呢?简而言之,SQL就是维护和使用关系型数据库中的的数据的 ...
- C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com
原文:C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | I ...
- SQL 基础语法笔记教程整理
最近从图书馆借了本介绍 SQL 的书,打算复习一下基本语法,记录一下笔记,整理一下思路,以备日后复习之用. PS:本文适用 SQL Server2008 语法. 首先,附一个发现的 MySQL 读书笔 ...
- [python] Pythonic语法笔记
Pythonic语法笔记 __new__ 在类实例化之前执行的,也就是在init之前执行,可以为这个类写操作.接受的参数不是self而是cls.只有在new方法里返回类才会执行init操作,需要返回父 ...
- python学习第五讲,python基础语法之函数语法,与Import导入模块.
目录 python学习第五讲,python基础语法之函数语法,与Import导入模块. 一丶函数简介 1.函数语法定义 2.函数的调用 3.函数的文档注释 4.函数的参数 5.函数的形参跟实参 6.函 ...
- Python编程从入门到实践笔记——函数
Python编程从入门到实践笔记——函数 #coding=gbk #Python编程从入门到实践笔记——函数 #8.1定义函数 def 函数名(形参): # [缩进]注释+函数体 #1.向函数传递信息 ...
- MySQL 储存过程-原理、语法、函数详细说明
Mysql储存过程是一组为了完成特定功能的SQL语句集,经过编译之后存储在数据库中,当需要使用该组SQL语句时用户只需要通过指定储存过程的名字并给定参数就可以调用执行它了,简而言之就是一组已经写好的命 ...
- 《python基础教程(第二版)》学习笔记 函数(第6章)
<python基础教程(第二版)>学习笔记 函数(第6章) 创建函数:def function_name(params): block return values 记录函数:def f ...
- openresty开发系列14--lua基础语法3函数
openresty开发系列14--lua基础语法3函数 一)function (函数) 有名函数: optional_function_scope function function_name( ar ...
- JAVA基础语法:函数(方法)、类和对象(转载)
4.JAVA基础语法:函数(方法).类和对象 函数 在java中函数也称为方法,是一段具备某种功能的可重用代码块. 一个函数包括这几部分: 函数头 函数头包括函数访问修饰符,函数返回值类型, 函数名, ...
随机推荐
- 有Redis为什么还要本地缓存?谈谈你对本地缓存的理解?
本地缓存是将数据存储在应用程序所在的本地内存中的缓存方式.既然,已经有了 Redis 可以实现分布式缓存了,为什么还需要本地缓存呢?接下来,我们一起来看. 为什么需要本地缓存? 尽管已经有 Redis ...
- 【2024.10.03】NOIP2024 赛前集训-刷题训练(5)
[2024.10.03]NOIP2024 赛前集训-刷题训练(5) NOIP2017 提高组 小凯的疑惑 形式化题面:求最大的正整数 \(w\),满足 \(ax + by = w\) 不存在一对非负整 ...
- Antlr4 语法解析生成器(上)
简介 Spark SQL.Presto --> Antlr4 SQL 解析器 Flink SQL --> Apache Calcite(通过JavaCC 实现) Spark SQL如何进行 ...
- linux基本指令总结
拖了好久的linux学习,终于开始啦 环境终于没问题了 边学边总结 一.常用指令 1.1 关机与开机 poweroff 马上关机 reboot 马上重启 1.2 目录文件操作命令 cd / 切换到根目 ...
- Classical wave-optics analogy of quantum-information processing
量子信息处理的经典波-光模拟(Spreeuw 2002 PRA) <经典波光学.pdf> 核心: 1. 只有'局域纠缠' 有经典模拟! 基于经典波光学的模拟模型系统,应用于3个涉及到3qu ...
- Galera_Cluster_Mysql部署
前言 先来了解下它的身世,Galera Cluster是Codership公司开发的一套免费开源的高可用方案 官网为http://galeracluster.com.Galera Cluster即为安 ...
- Mysql篇-Buffer Pool中的三大链表
为什么要有 Buffer Pool? 虽然说 MySQL 的数据是存储在磁盘里的,但是也不能每次都从磁盘里面读取数据,这样性能是极差的. 要想提升查询性能,那就加个缓存.所以,当数据从磁盘中取出后,缓 ...
- k8s之常见问题汇总
1.服务器中的k8s已经被移除,但是磁盘依然有占用, 于是将其卸载并删除操作 [root@k8s-node2 k8s_node]# rm -rf /var/lib/kubelet rm: cannot ...
- API 接口开发调试工具之ApiPost
安装 ApiPost ApiPost 支持 Windows.Mac.Linux 平台,你可以通过这个链接下载软件安装包: https://www.apipost.cn/download.html?fr ...
- 从零开始的Python世界生活——基础篇(Python字典)
从零开始的Python世界生活--基础篇(Python字典) 1.Python字典是什么? Python字典是python中非常重要的非常灵活和强大的内置数据结构,用于存储键值对(key-valu ...