[GoLang避坑实战-06] 该选指针接收者吗?老墨带你一次理清函数与方法的纠葛
大家好,我是极客老墨。 函数返回多个值?刚接触 Go 时我还不习惯,写惯了 Java 的单返回值。后来发现这设计真香,错误处理直接 result, err := doSomething(),不用再搞什么异常捕获。 更绝的是 Go 的闭包、defer、方法绑定,这些特性组合起来,让代码既简洁又强大。 这篇就聊聊 Go 函数和方法的几个核心特性。 函数声明:类型在后面 Go 的函数声明用 func 关键字,参数类型写在变量名后面: 1func add(a int, b int) int { 2 return a + b 3} 4 5// 参数类型相同可以合并 6func add(a, b int) int { 7 return a + b 8} 这是 Go 的特色,跟 C/Java 反着来。习惯就好。 多返回值:Go 的杀手锏 Go 支持函数返回多个值,这在错误处理中特别好用: 1func divide(a, b int) (int, error) { 2 if b == 0 { 3 return 0, errors.New("division by zero") 4 } 5 return a / b, nil 6} 7 8// 调用时接收两个返回值 9result, err := divide(10, 0) 10if err != nil { 11 fmt.Println("Error:", err) 12 return 13} 14fmt.Println("Result:", result) 不需要某个返回值?用下划线 _ 忽略: 1result, _ := divide(10, 2) // 忽略错误(不推荐) 命名返回值:可以更简洁 给返回值命名后,可以直接在函数体内使用,还能用裸 return: ...