作者:Mars酱
声明:本文章由Mars酱编写,部分内容来源于网络,如有疑问请联系本人。
转载:欢迎转载,转载前先请联系我!
前言
go的指针相比c++
里面的已经容易很多了。c++
的指针定义太多了:空指针、野指针、常量指针、指针常量,还有结构体指针,c++
在指针这一块就复杂很多。
我理解的Go的指针
我理解的Go的指针就两种:一种获取内存地址,一种获取地址指向的值。分别用&
和*
表示
(我可能理解得有错,接受专家级Goer的批评,向你们学习)
声明指针
声明一个指针变量:
var pointerObj *int
给指针变量赋值
为指针变量赋值:
var intNumber int = 1
pointerObj = &intNumber
获取指针的内存地址
fmt.Println(&pointerObj)
获取指针的值
fmt.Println(&pointerObj)
完整示例
import (
"fmt"
"testing"
)
// author: mars酱
func Test_point2(t *testing.T) {
var pointerObj *int
var intNumber = 1
pointerObj = &intNumber
fmt.Printf(">>> 内存地址为:%v\n", &pointerObj)
fmt.Printf(">>> 值为:%d\n", *pointerObj)
}
运行结果:
Go的空指针
看完上面的逻辑,空指针就比较容易理解了,当定义了一个指针但是这个指针没有给它分配任何变量的时候,它的值就是空指针,在go里面为nil。
nil在概念上和其他语言的null、None、NULL基本一样,都是表示空值。
如果我们判断一个值是不是空值,则写成:
// 判断pointerObj不是空指针
if(pointerObj != nil)
标签:pointerObj,fmt,一分钟,var,Go,intNumber,指针
From: https://blog.51cto.com/marsz/6223682