php和go引用传值取值问题?

go有引址符&和取址符 *
PHP就一个引址符 &

$a = 1;
$b = &a;
$b++;
echo $c;  # 2

func main() {
    a := 1
    b := &a
    *b++
    fmt.Println(*b); # 2
    
}

Q: *号现在在这里的优点在哪里?如何于php的单独的&符号做比较呢?

阅读 1.2k
1 个回答

二者没有可比性,go中的& 只是个语法糖,意为取地址,php则是取别名
所以go需要先解引用,修改内容,其b是个指针变量

    a := 1
    b := &a
    (*b)++
    fmt.Println(*b,a); // 2,2

而php这样你或许易理解

<?php

$a = 1;
$b = &$a;
$b++;
echo $a; # 2
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题