乐趣区

关于golang:Go-语言使用函数

定义函数

func test(a int, b int, c string) (int, string, bool) {return a + b, c, true}

func main() {v1, s1, _ := test(10, 20, "hello")
    fmt.Println("v1:", v1, ", s1:", s1)
}

或者

func test(a, b int, c string) (res int, str string, bl bool) {
    res = a + b
    str = c
    bl = true
    return
}

func main() {v1, s1, _ := test(10, 20, "hello")
    fmt.Println("v1:", v1, ", s1:", s1)
}

单个返回值能够不应用括号

func test() int {return 10}

指针内存逃逸

func main() {res := testPtr()
    fmt.Println("city:", *res)
}

// 返回一个 string 类型的指针
func testPtr() *string {
    // name 不会逃逸
    name := "张三"
    ptrn := &name
    fmt.Println("*ptrn:", *ptrn)
    
    // city 会逃逸,因为须要在函数外应用
    city := "广州"
    ptrc := &city
    return ptrc
}
# 编译查看堆栈详情
go build -o test.exe --gcflags "-m -m -l" test.go
退出移动版