go有引址符&和取址符 *
PHP就一个引址符 &
$a = 1;
$b = &a;
$b++;
echo $c; # 2
func main() {
a := 1
b := &a
*b++
fmt.Println(*b); # 2
}
Q: *
号现在在这里的优点在哪里?如何于php的单独的&
符号做比较呢?
二者没有可比性,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