写点什么

Go- 函数参数和返回值

用户头像
HelloBug
关注
发布于: 1 小时前
Go- 函数参数和返回值

Go 学习笔记,学习内容《Go入门指南》


主要介绍以下内容:

  • 函数形式

  • 函数参数按值传递和按引用传递

  • 命名的返回值

  • 改变外部变量的值


代码示例可以直接运行

package main
import ( "fmt")
/* func1可采用以下三种声明方式*///func func1(a int, b int) (x int, y int, z int) {//func func1(a, b int) (x, y, z int) { // a, b为函数形参func func1(a, b int) (int, int, int) { // 非命名返回值,糟糕的实现 return a, b, 3}
/* 即使返回值只有一个参数,也要用()括起来func func2() x int { // 编译错误:syntax error: unexpected int after top level declarationfunc func2() int { // 编译错误:missing return at end of function fmt.Println("func2")}*/
func func3(p *int) { fmt.Println(p) // 输出:0xc00000a0d0---num的地址 fmt.Println(*p) // 输出:10 *p = 100 fmt.Println(*p) // 输出:100}
func func4(a int) (x int, y int) { x = a * 2 y = a * 3 return}
func func5(a int) (x int, y int) { m := a * 2 n := a * 3 return m, n}
func func6(a int) (x int, y int) { x = a * 2 y = a * 3 return x, y}
func multiply(a, b int, result *int) { // 使用指针改变result的值,函数不再需要返回值 *result = a * b}
func main() { /* 函数形式 函数返回值的格式和接收变量的个数必须相等,否则编译错误 */ a, b, c := func1(1, 2) // 1, 2为函数实参 fmt.Println(a, b, c)
/* 按值传递 Go 默认使用按值传递参数,即传递参数的副本 以上func1 func2的调用即是按值传递参数 */
/* 按引用传递 按引用传递即传递参数的地址 */ var num int = 10 fmt.Println(&num) // 输出:0xc00000a0d0---num的地址 fmt.Println(num) // 输出:10 func3(&num) fmt.Println(num) // 输出:100
/* 命名的返回值 */ x, y := func4(2) fmt.Println(x, y)
x, y = func5(2) fmt.Println(x, y)
x, y = func6(2) fmt.Println(x, y)
_, y = func6(100) // 空白符将第一个返回值丢弃 fmt.Println(y)
/* 改变外部变量的值 */ var result int multiply(3, 5, &result) fmt.Println(result)}
复制代码


发布于: 1 小时前阅读数: 2
用户头像

HelloBug

关注

还未添加个人签名 2018.09.20 加入

还未添加个人简介

评论

发布
暂无评论
Go- 函数参数和返回值