go 指针 *和&

阿里云1888代金券点此领取
go语言中&放在一个变量前,代表取变量的内存地址,类似python中的id()这个函数,但是python中其实是没有指针这个概念的。

package main

import "fmt"

func main() {
	a := "A"   // a的类型为 string
	b := &a  // b的类型为*string *代表指针,这里b是一个指针变量
	fmt.Println(b) // 0xc0420381d0  这里a是被取地址的变量,b变量进行接收。
}

变量,指针,地址三者的关系是:每个变量都拥有地址,指针的值就是地址。

在对变量使用&取得地址后,可以对指针使用*进行取值。

package main

import "fmt"

func main() {
	a := "A"   // a的类型为 string
	b := &a  // b的类型为*string *代表指针,这里b是一个指针变量
	res := *b
	fmt.Println(b) // 0xc0420381d0  这里a是被取地址的变量,b变量进行接收。
	fmt.Println(res) // "A" 
}

&和*是一对互补操作符,&取出地址,*根据地址取出地址指向的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值