Go基础知识梳理(二)

简单函数的定义

//有参数有返回值
func sum(a int, b int) int {
return a + b
}
//无返回值
func sum(a int, b int) {}
//无参数无返回值
func sum(){}
//返回多个值
func sum(a int, b int) (int, error) {
return a+b, nil
}
//参数简写(类型相同)
func sum(a, b int) int {
return a + b
}

匿名函数的定义

func main() {
//定义一个匿名函数sum
sum := func(a, b int) int {
return a + b
} res := sum(1 + 2)
fmt.Println(res) // 3
}

defer关键字

//defer 语句会在return后执行,并且是栈原理,先注册就先入栈,最后执行

func main() {
print := func(a string) {
fmt.Println(a)
}
defer print("First")
defer print("Second") return
}
打印结果
Second
First func main() {
a := 0
print := func(a int) {
fmt.Println(a)
}
defer print(a)
a += 1
}
打印结果
0 //因为defer语句先注册,已经获取到了该变量的副本 //另一种情况
func main() {
a := 0
print := func(a *int) {
fmt.Println(*a)
}
defer print(&a)
a += 1 return
}
打印结果
1 //因为获取到的是a变量的内存地址

Error错误

//在多个返回值的函数中,error通常放在最后一位进行返回
func sum(a, b int) (int, error) {
return a + b, errors.New("fail")
}
//对于处理有err返回的,应先用if处理
func main() {
a := "1"
b, err := strconv.Atoi(a)
if err != nil {
return
}
fmt.Println(b)
}
//defer 吾句应该放到四判断的后面,不然有可能产生 panic
//正确写法
func sql() {
SQL := "SELECT * FROM test"
stmt, err := self.Conn.Prepare(SQL)
if err != nil {
logger.Logln(logger.ERROR, err)
return false
}
defer stmt.Close()
}
//错误写法
func sql() {
SQL := "SELECT * FROM test"
stmt, err := self.Conn.Prepare(SQL)
defer stmt.Close() //updated
if err != nil {
logger.Logln(logger.ERROR, err)
return false
}
//defer stmt.Close()
}

Go基础知识梳理(二)的更多相关文章

  1. [SQL] SQL 基础知识梳理(二) - 查询基础

    SQL 基础知识梳理(二) - 查询基础 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5904824.html 序 这是<SQL 基础知识梳理( ...

  2. [SQL] SQL 基础知识梳理(一)- 数据库与 SQL

    SQL 基础知识梳理(一)- 数据库与 SQL [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902856.html 目录 What's 数据库 ...

  3. [SQL] SQL 基础知识梳理(三) - 聚合和排序

    SQL 基础知识梳理(三) - 聚合和排序 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5926689.html 序 这是<SQL 基础知识梳理 ...

  4. [SQL] SQL 基础知识梳理(四) - 数据更新

    SQL 基础知识梳理(四) - 数据更新 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5929786.html 序 这是<SQL 基础知识梳理( ...

  5. [SQL] SQL 基础知识梳理(五) - 复杂查询

    SQL 基础知识梳理(五) - 复杂查询 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5939796.html 序 这是<SQL 基础知识梳理( ...

  6. [C# 基础知识梳理系列]专题六:泛型基础篇——为什么引入泛型

    引言: 前面专题主要介绍了C#1中的2个核心特性——委托和事件,然而在C# 2.0中又引入一个很重要的特性,它就是泛型,大家在平常的操作中肯定会经常碰到并使用它,如果你对于它的一些相关特性还不是很了解 ...

  7. C#基础知识梳理索引

    C#基础知识梳理索引 一 引子 之前曾写了一篇随笔<.NET平台技术体系梳理+初学者学习路径推荐+我们的愿景与目标> 三个月过去了,目标使更多的编程初学者,轻松高效地掌握C#开发的基础,重 ...

  8. [SQL] SQL 基础知识梳理(六)- 函数、谓词、CASE 表达式

    SQL 基础知识梳理(六)-  函数.谓词.CASE 表达式 目录 函数 谓词 CASE 表达式 一.函数 1.函数:输入某一值得到相应输出结果的功能,输入值称为“参数”,输出值称为“返回值”. 2. ...

  9. [SQL] SQL 基础知识梳理(七)- 集合运算

    SQL 基础知识梳理(七)- 集合运算 目录 表的加减法 联结(以列为单位) 一.表的加减法 1.集合:记录的集合(表.视图和查询的执行结果). 2.UNION(并集):表的加法 -- DDL:创建表 ...

随机推荐

  1. 面向次世代的Windows App SDK 近况

    Project Reunion作为面向次世代Windows App Development的统一工具集.在2021年11月,第三个稳定版正式以1.0的版本号发布的同时,改名部果断出手,以全新的名称Wi ...

  2. 前缀函数与Z函数介绍

    字符串算法果然玄学=_= 参考资料: OI Wiki:前缀函数与KMP算法 OI Wiki:Z函数(扩展KMP) 0. 约定 字符串的下标从 \(0\) 开始.\(|s|\) 表示字符串 \(s\) ...

  3. Hadoop支持LZO

    0. 环境准备 maven(下载安装,配置环境变量,修改sitting.xml加阿里云镜像)gcc-c++zlib-develautoconfautomakelibtool通过yum安装即可 yum ...

  4. 计算机电子书 2018 BiliDrive 备份

    下载方式 根据你的操作系统下载不同的 BiliDrive 二进制. 执行: bilidrive download <link> 链接 文档 链接 Webpack 中文指南.epub (40 ...

  5. [转]有关ListIterator接口的add与remove方法探究

    原文地址: http://www.java123.net/v/492971.html 应用案例: http://820199753.iteye.com/blog/2230032 ListIterato ...

  6. 替小白整理的 linux基操命令 切勿扣6 不用感谢

    Linux --------小白必会的基本命令 命令行提示字符[root@localhost ~]#[当前登录系统的用户@主机名称 当前所在的目录]## 表示为管理员登录$ 表示为普通用户登录   切 ...

  7. 一个实用批处理指令制作过程分享:Perforce更新完后打开VisualStudio再编译

    需求来源 笔者从事Unreal游戏客户端工作,使用VisualStudio开发,然后经常干一个事:就是使用Perforce(或svn)拉取最新代码,(一些时间后)拉取完之后然后打开 项目.sln,即V ...

  8. 使用污点分析检查log4j问题

    摘要:log4j问题的余波还在继续,为什么这个问题潜伏了这么长时间,大家一直没有发现?这里从静态分析的角度谈下log4j问题的发现. 本文分享自华为云社区<使用污点分析检查log4j问题> ...

  9. suse 12 sp3 利用shell脚本离线编译安装ansible

    # 测试环境是suse 12 sp3的系统,机器都是内网使用的,安装ansible真的很难顶 # 测试环境使用的python版本:2.7.13-27 # 此脚本只在本人测试环境成功,其他环境,需要选择 ...

  10. 学习java知道这五个网站就够了

    "这个国家的每个人都应该学习编程计算机,因为它教你如何思考." 当乔布斯几年前这么说时,他再次被证明是一个真正的有远见的人. 好吧,这很难反驳!如今,编程比以往任何时候都更加蓬勃发 ...