1.指针类型传递,可以达到修改变量值的目的。指针类型的拷贝是浅拷贝,拷贝后的值,指向的内存地址和原值的内存地址一样,修改其中一个值,这个内存地址上的值都会改变
2.值类型的拷贝是深度拷贝,会将给拷贝的值创建一个新的内存空间,存储值
package main
import "fmt"
// Test 测试结构体
type Test struct {
Name string
Num int
}
// getTestInfo_1 t操作对象本身 => 修改内存中引用的值
func (t *Test) getTestInfo_1() {
t.Name = "测试"
}
// getTestInfo_2 t为局部变量,对其修改不影响对象的值 => 一个副本(不影响原来的内存)
func (t Test) getTestInfo_2() Test {
t.Num = 2
return t
}
func main() {
test := &Test{}
test.getTestInfo_1()
test2 := test.getTestInfo_2()
fmt.Printf("Test1:%v, Test2:%v \n", test, test2)
}
返回值:

本文探讨了Golang中指针类型和值类型在参数传递时的区别。指针类型传递允许直接修改原始变量,由于是浅拷贝,拷贝后的指针与原指针指向同一内存地址。而值类型传递则会产生深度拷贝,新值在不同的内存空间,修改不会影响原始值。

被折叠的 条评论
为什么被折叠?



