为什么80%的码农都做不了架构师?>>>
函数
标准定义
简化定义:省略参数、返回值类型
调用
// Function
package mainimport ("errors""fmt"
)//标准的函数定义
func functionDefineAdd(a int, b int) (ret int, err error) {if a < 0 || b < 0 {err = errors.New("Should be non-negative numbers!")return //同"return ret, err"}return a + b, nil
}//简化参数类型
func functionSimpleDefine(a, b int) (sum, sub int) {return a + b, a - b
}func main() {ret, err := functionDefineAdd(-1, 1)if err != nil {fmt.Println(err.Error())} else {fmt.Println(ret)}sum, sub := functionSimpleDefine(2, 1)fmt.Printf("Sum: %d, sub:%d", sum, sub)
}
关于函数需要注意的点
- 不支持重载
- 不支持默认参数
- 支持命名返回值(返回值声明时可以带变量,函数内可以直接return)
- 函数内返回局部变量指针是安全的,编译器会通过逃逸分析来决定是否在堆上分配内存
- 函数内不可以定义与参数同名变量