【Golang入门】五、指针,值类型和引用类型的使用特点

基本数据类型 (int, float, string等),变量存的是值,用 取地址符& 可以获取变量的地址:

package main

import (
  "fmt"
)
func main() {
  // 基本数据类型,变量就是值
  var i int = 10
  // 输出 i 在内存中的地址
  fmt.Println("i 的地址是 ", &i)
}

变量 i 的地址为:

一、指针类型

对于指针类型,指针变量存的是一个地址,该地址指向的空间存的才是值,用 “ * ” 获取指针所指向的值:

package main

import (
  "fmt"
)
func main() {
  // 基本数据类型,变量就是值
  var i int = 10
  // 输出 i 在内存中的地址
  fmt.Println("i 的地址是 ", &i)

  // 指针类型
  // 1. ptr 是一个指针变量
  // 2. ptr 的类型是 *int
  // 3. ptr 的值是 &i
  // 4. ptr 指向的值为 *ptr
  var ptr *int = &i
  fmt.Printf("ptr = %v", ptr)
  fmt.Println("ptr 指向的值为 ", *ptr)
}

输出结果为:

1. 示例

案例:

  1. 获取一个int变量num的地址,并显示到终端;
  2. 将num的地址赋给指针ptr,通过ptr修改num的值。
package main

import (
  "fmt"
)
func main() {
  // 1. 获取一个int变量num的地址,并显示到终端
  var num int = 520
  fmt.Println("num = ", num, ", num 的地址是 ", &num)

  // 2. 将num的地址赋给指针ptr,通过ptr修改num的值
  var ptr *int = &num
  *ptr = 1314
  fmt.Println("修改之后的值为 num = ", *ptr)
}

输出结果为:

2. 使用细节

1、 每个值类型都有对应的指针类型,形式为数据类型
2、 值类型包括: 基本数据类型int系列,float系列,bool,string,数组,结构体struct。

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

1. 值类型

值类型包括:基本数据类型 int 系列,float 系列,bool,string,数组,结构体struct。

特点: 变量直接存储值 内存通常在中分配

2. 引用类型

引用类型包括:指针,slice切片,map,管道chan,interface等。

特点:变量存储的是一个地址 ,该地址对应的空间中存储的才是值,内存通常在堆上分配,没有任何变量引用该地址时,对应的数据空间就成为一个垃圾,由GC回收

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值