Go 结构体的值传递和地址传递

Go 结构体的值传递和地址传递

package main

import "fmt"

type student struct {
    
    
	id   int
	name string
	sex  byte
	age  int
	addr string
}

func test01(s student)  {
    
    
	s.id = 2
	fmt.Println("test s = ", s)
}

func test02(p *student )  {
    
    
	p.id = 3
	fmt.Println("p = ", *p)
}

func main() {
    
    
	s1 := student{
    
    id: 66, name: "后端码匠", age: 18}
	fmt.Println("s1 = ", s1)
	test01(s1) //这里进行的是值传递,形参无法变更实参
	fmt.Println("s1 = ", s1)
	test02(&s1) //这里传递的是结构体的地址,函数里的操作会直接操作地址指向的结构体
}

执行结果

s1 =  {
    
    66 后端码匠 0 18 }
test s =  {
    
    2 后端码匠 0 18 }
s1 =  {
    
    66 后端码匠 0 18 }
p =  {
    
    3 后端码匠 0 18 }

Guess you like

Origin blog.csdn.net/weixin_43874301/article/details/121107911
Go