呃,最近在学习go语言,因为我是从java转过来的,有好多不习惯
- go函数返回类型引用类型和值类型
go函数的返回值可以为引用类型和值类型,引用类型就是直接返回内存地址值类型是变量的副本,所以大多数情况下是返回内存地址比较节省空间
package main
import (
"fmt"
)
func getVar() string {
var name = "wtsoftware"
fmt.Println("函数内的变量内存地址:", &name)
return name
}
func getVarAdd() *string {
var name = "wtsoftware"
fmt.Println("函数内nameAdr的变量内存地址:", &name)
return &name
}
func main() {
fmt.Println("Hello World!")
name := getVar()
nameAdr := getVarAdd()
fmt.Println("函数外的变量内存地址:", &name)
fmt.Println("函数外nameAdr的变量内存地址:", nameAdr)
fmt.Println("metho 变量name:", name)
}
执行当前函数以后的返回值
Hello World!
函数内的变量内存地址: 0xc4200741e0
函数内nameAdr的变量内存地址: 0xc420074200
函数外的变量内存地址: 0xc4200741d0
函数外nameAdr的变量内存地址: 0xc420074200
metho 变量name: wtsoftware
成功: 进程退出代码 0.
可以看到 如果直接返回变量,则在函数内部直接返回了一个变量的副本,内存地址是不一样 的。而返回指针类型的nameAdr内存地址在函数内部和函数外部获取的地方都是一个内存地址
有疑问加站长微信联系(非本文作者)