定义函数
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