[go学习笔记.第三章.变量] 5.指针,值类型与引用类型

一.指针

基本介绍

1).基本数据类型,变量存的就是值,也叫值类型

2).获取变量的地址,用&,eg: var num int,获取num的地址:&num

3).指针类型,指针变量存的是一个地址,这个地址指向的空间存的才是值,eg: var ptr *int = &num

4).获取指针类型所指向的值,使用*,eg:var ptr *int,使用*ptr获取ptr指向的值

举例:

  

    var i int = 10
	fmt.Println("i的地址:",&i)

	var ptr *int = &i
	fmt.Printf("ptr 的值:%v\n", ptr)
	fmt.Printf("ptr 的类型:%T\n", ptr)
	fmt.Printf("ptr 的地址:%v\n", &ptr)
	fmt.Printf("ptr 指针对应的值:%v\n", *ptr)

    // 写一个程序,获取一个变量num的地址,并显示在终端
	// 将num的地址赋给指针ptr,并通过ptr去修改num的值
	var num int = 100
	fmt.Printf("num的值:%d,对应的地址:%v\n", num, &num)

	var ptr1 *int = &num
	fmt.Printf("ptr1的值:%v,对应的地址:%v\n", ptr1, &ptr1)
	*ptr1 = 2090  // 这里修改,会让num的值发生改变
	fmt.Printf("ptr1的值:%v,对应的地址:%v\n", ptr1, &ptr1)
	fmt.Printf("num的值:%d,对应的地址:%v\n", num, &num)

 指针细节说明

1).值类型,都有对应的指针类型,形式为 *数据类型,eg: int的对应指针就是*int,float32对应的指针类型为*float32...

2).值类型包括:基本数据类型int系列,float系列,bool,string,数据和结构体struct

 二.值类型与引用类型

常见的值类型和引用类型

1).值类型:基本数据类型int系列,float系列,bool,string,数据和结构体struct

2).引用类型:指针,slice切片,map,channel管道,interface等都是引用类型

值类型和引用类型的使用特点

1).值类型:变量直接存储值,内存通常在栈中分配

2).引用类型:变量存储的是一个地址,这个地址对应的空间才真正存储数据(值),内存通常在堆上分配,当没有任何变量引用这个地址时,该地址对应的数据空间就成为一个垃圾,会有GC来回收

 上一节:[go学习笔记.第三章.变量] 4.基本数据类型和string的相互转换

 下一节 :[go学习笔记.第三章.变量] 6.标识符的命名规范

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值