Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
4.0k 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 Reply

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...