PHP自学Go日记(七):数字、字符串类型的引用变量

这是在PHP中的引用变量:

<?php

$a = 1;
$b &= $a;
$b = 2;

echo $a; // 2

 

在Go中也存在引用变量这一概念,不过比PHP稍显复杂,我们先看一下代码: 

package main

import(
	"fmt"
)

func main () {
    a := 1
    b := &a
    *b = 2

    fmt.Println("a = ", a) // 2
}

在Go中,有一个概念叫指针,表示每个表量的临时虚拟存储地址。

当初始化变量a时,变量的实际存储情况如下:

当初始化变量b时,我们注意到在变量a前面添加了修饰符“&”,表示变量b的变量值为变量a的指针。如下图所示:

 

当我们需要通过变量b改变变量a的值时,不能直接使用“b = 2”这种写法,否则只会改变变量b的变量值,因此我们使用了“*b = 2”这种写法。修饰符“*”代表我们要改变的是该变量值中指针指向的变量值。如下图所示:

 

 

在函数中改变函数外的变量:

package main

import(
	"fmt"
)

func main () {
    a := 1
    changeValue(&a)
    fmt.Println("a = ", a) // 2
}

/*
    入参类型前加“*”代表参的原始值是变量值内存地址
	如果直接使用变量,会拿到内存地址,变量前加“*”才会拿到引用变量的值
*/
func changeValue(b *int){
    *b = 2
}

在函数中,入参的类型声明前添加修饰符“*”,代表仅接受整形变量的指针传入。同样的,在函数体内使用修饰符“*”才能改变a的值。

注:以上内容仅适用于整形、浮点型及字符串类型,其他类型处理方法有所不同。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值