Go,拥有C的特性,所以如果有C家族语言基础的小伙伴对于取址符肯定不会陌生
取址符在interface{}中的应用,举个例子
package main
import (
"fmt"
"time"
)
type Student struct {
id int
name string
age int
birth time.Time
}
func changStudent1(record Student) {
record.id = 1
record.name = "小明"
record.age = 100
record.birth = time.Now()
}
func changStudent2(record *Student) {
record.id = 1
record.name = "小明"
record.age = 100
record.birth = time.Now()
}
var testInt int = 10
func changeTestInt(tmp int) {
tmp = 200
}
func main() {
s := Student{}
changStudent1(s)
fmt.Println(s)
changStudent2(&s)
fmt.Println(s)
changeTestInt(testInt)
fmt.Println(testInt)
}
输出结果如下:
{0 0 {0 0 <nil>}}
{1 小明 100 {13793474783668545352 6981801 0x586b60}}
10
结论
如果需要变量或者结构体,进入函数处理后,后面的值得变更为处理后的值,那么就应该用指针传值