[Golang]func的结构与特性整理-Part 1

一、结构
func name(InputParameter-list) (OutPutResult-list) {
function body
}
InputParameter: 输入的变数
OutPutResult: 输出的变数
输出的变数,如果只有一个,可以省略()。下面有範例。

二、特性
在Go语言中,函数是一等(first-class)公民,函数类型也是一等的数据类型。

可变参数
常用的 fmt.Println()之类的函数,就是可以接收可变长的参数。
在类型的前面加上... (三个点)
package mainimport ("fmt")func Sum(ops ...int) int {  sum := 0  for _, ops := range ops {    sum += ops  }  return sum}func main() {  fmt.Println(Sum())  fmt.Println(Sum(1))  fmt.Println(Sum(1,2,3))}

https://play.golang.org/p/JQMsgZsBOr-

多返回值
可以用_ (下滑线),省略参数
package mainimport ("fmt")func Sum(ops ...int) (number, total int) {  sum := 0  num := 0  for _, ops := range ops {    num ++    sum += ops  }  return num, sum}func main() {    x, y := Sum()  fmt.Println(x,y)  _, y = Sum(1) //忽略第一个返回值  fmt.Println(y)  x, y = Sum(1,3,5)  fmt.Println(x, y)}

https://play.golang.org/p/dTYzJefJNxn

把函数当做值传递
(函数做为值传入和函数做为返回值)
package mainimport ("fmt""errors")type operate func(x, y int) int//输入: 两个int类型的变数,和一个operate类型的参数//输出: 一个int类型,和一个error类型的结果func check(x int, y int, op operate) (int, error) {if op == nil { //检查op的参数,是不是 nilreturn 0, errors.New("Invalid")}return op(x, y), nil}//Sum和operate的宣告方式一致func Sum(a, b int) int {  return a + b}func main() {x, y := 1, 2op := Sumresult, err := check(x, y, op)fmt.Printf("Result: %d (error: %v)\n", result, err)result, err = check(x, y, nil)fmt.Printf("Result: %d (error: %v)\n", result, err)}

https://play.golang.org/p/3-xXDTb89t2

参考来源:

Go语言核心36讲-郝林
https://www.flysnow.org/2017/03/31/go-in-action-go-method.html


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章