Go 语言学习手札 ━━ 指针

指针的定义

一个指针变量指向了一个值的内存地址。

指针的声明

类似于变量和常量,在使用指针前你需要声明指针。指针声明格式为:var var_name *var-type

  • var-type 为指针类型
  • var_name 为指针变量名
  • * 号用于指定变量是作为一个指针
// 如:
var ip *int        // 指向整型
var fp *float32    // 指向浮点型

指针的使用流程

  • 定义指针变量
  • 为指针变量赋值
  • 访问指针变量中指向地址的值
// 例:
package main

import "fmt"

func main() {
   var a int= 20      // 声明实际变量
   var ip *int        // 声明指针变量

   ip = &a  // 指针变量的存储地址

   fmt.Printf("a 变量的地址是: %x\n", &a  )

   // 指针变量的存储地址
   fmt.Printf("ip 变量储存的指针地址: %x\n", ip )

   // 使用指针访问值
   fmt.Printf("*ip 变量的值: %d\n", *ip )
}
// 输出结果为:
// a 变量的地址是: 20818a220
// ip 变量储存的指针地址: 20818a220
// *ip 变量的值: 20

空指针

当一个指针被定义后没有分配到任何变量时,它的值为 nil。nil 指针也称为空指针。nil 在概念上和其它语言的 null、None、nil、NULL 一样,都指代零值或空值。一个指针变量通常缩写为 ptr。

// 如:
package main

import "fmt"

func main() {
   var  ptr *int

   fmt.Printf("ptr 的值为 : %x\n", ptr  )
}

// 空指针判断:
if(ptr != nil)     // ptr 不是空指针
if(ptr == nil)     // ptr 是空指针

标签:

About: Mr.zhang

成谜于写 bug 无法自拔~


发表评论

邮箱地址不会被公开。 必填项已用*标注