Welcome toVigges Developer Community-Open, Learning,Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
3.6k views
in Technique[技术] by (71.8m points)

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的单独的&符号做比较呢?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

二者没有可比性,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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to Vigges Developer Community for programmer and developer-Open, Learning and Share
...