注:本文是《Go语言核心编程》(李文塔/著)个人读书笔记
首字母大小写决定函数在其他包的可见性,大写时其他包可见,小写时只有相同的包可以访问。 多个相邻的同类型的参数可以使用简写模式 不支持默认参数 不支持函数重载
Go 函数实参到形参的传递永远是值拷贝,即使是参数是指针也是值拷贝,传递给形参的是这个指针变量的副本, 二者指向同一地址 , 本质上参数传递仍然是值拷贝。
函数签名也就是函数类型,一个函数的签名就是指函数定义首行去掉函数名、参数名和{ 两个函数类型相同的条件是:拥有相同的形参列表和返回值列表(列表元素的次序、个数和类型都相同),形参名可以不同 。
匿名函数可以看作函数字面量 , 所有直接使用函 数类型变量的地方都可以由匿名函数代替。医名函数
不定参数类型必须一致
多个参数时,不定参数必须是最后一个。
不定参数在函数体内相当于切片。切片可以作为参数传递给不定参数,切片名后面需要加上...
先进后出( FILO )的 顺序在函数返回前被执行 。 这有点类似于 Java 语言中异常处理中的 finaly 子句。 defer 常用于保 证一些资源最终一定能够得到回收和释放。
闭包是由函数及其相关引用环境组合而成的实体,一般通过在匿名函数中引用外部函数的 局部变量或包全局变量构成。 闭包对闭包外的环境引入是直接引用,编译器检测到闭包,会将闭包引用的外部变量分配 到堆上 。
panic 用来主动抛出错误
recover 用来捕获 panic 抛出的错误。
Go 语言内置错误接口类型 error。 任何类型只要实现 Eηor() string 方法,都可以传递 eηor 接口类型变量。 Go 语言典型的错误处理方式是将 error 作为函数最后一个返回值 。 在调用函数 时 , 通过检测其返回的 error 值是否为 nil 来进行错误处理。