关于指针的一个小问题,让我有些困扰,希望大家能帮助我.

代码:

package main

import (
    "fmt"
)

type aw struct {
    ww int
}

func main() {
    a := aw{}
    change(&a)
    fmt.Println("a:", a)
}
func change(x *aw) {
    x = &aw{ww: 100} /*a始终为0*/
    fmt.Println(x)
    // x.ww = 100 //成功修改
}

//为什么 x.ww=100能够成功修改 而x=&aw{ww:100}却无法实现呢?
最佳答案
5年前 评论
ahao_1 (楼主) 5年前
ahao_1 (楼主) 5年前
讨论数量: 3

&aw{}是创建了一个新的struct

5年前 评论
5年前 评论
ahao_1 (楼主) 5年前
ahao_1 (楼主) 5年前
长日将尽

因为 xchange 函数的参数,相当于是函数内部的局部变量,不管在函数内部怎么修改,都不会影响 main 函数中的 a

5年前 评论
ahao_1 (楼主) 5年前
长日将尽 (作者) 5年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!