【Go语言0基础学习之旅#6】 Golang指针、值类型和引用类型

【Go语言0基础学习之旅#6】 Golang指针、值类型和引用类型

一、指针基本介绍

1、对于基本数据类型,变量存储的就是值,也叫值类型。

2、获取变量的地址,用&。eg:

package main

import (
	"fmt"
)

func main() {
	var num int = 100
	fmt.Println("num的地址=", &num)
}

//输出结果:num的地址= 0xc0000a6058

3、指针变量存储的值是一个地址,这个地址指向的空间中存储值。

4、获取指针类型所指向的值*。通过 *指针变量访问对应地址中的值。eg:

package main

import (
	"fmt"
)

func main() {
	var num int = 100
	fmt.Println("num的地址=", &num)

	var ptr *int = &num
	fmt.Println("获取ptr所指向的值 *ptr = ", *ptr)
}

//输出结果:
// num的地址= 0xc00000e088
// 获取ptr所指向的值 *ptr =  100

二、指针的简单使用

通过指针修改变量值,eg:

package main

import (
	"fmt"
)

func main() {
	var num int = 100
	fmt.Println("num的地址=", &num)

	var ptr *int = &num
	fmt.Println("获取ptr所指向的值 *ptr = ", *ptr)

	//修改值
	*ptr = 99
	fmt.Println("num的新值=", num)
}

//输出结果:
// num的地址= 0xc0000a6058
// 获取ptr所指向的值 *ptr =  100
// num的新值= 99

指针类型不匹配报错:

package main

import (
	"fmt"
)

func main() {
	var num int = 100
	var ptr *float64 = &num
}

报错提示如下:
报错

三、使用细节

1、使用指针时需要注意数据类型的匹配。int对应的指针类型就是 * int,float64对应的指针类型就是 * float64
2、值类型,都有对应的指针类型,形式为 *数据类型

四、值类型和引用类型

1、值类型包括:基本数据类型int系列、float系列、bool、string;数组和结构体struct。
2、引用类型包括:指针、slice切片、map、管道chan、接口interface等。

值类型引用类型
基本数据类型int系列、float系列、bool、string;数组和结构体struct指针、slice切片、map、管道chan、接口interface等

值类型和引用类型的使用特点:
1、值类型:变量直接存储值,内存通常在栈中分配。
值类型
2、引用类型:变量存储的是一个地址,这个地址对应的空间才真正存储数据(值),内存通常在堆上分配。当没有任何变量引用这个地址时,该地址对应的数据空间就成为一个垃圾,由GC来回收。
引用类型
栈区和堆区:
通常情况下,值类型和引用类型在内存中的分配如下:
栈区和堆区

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小夏与酒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值