首页 > 其他分享 >Go | 一分钟掌握Go | 6 - 指针

Go | 一分钟掌握Go | 6 - 指针

时间:2023-04-25 11:33:34浏览次数:37  
标签:pointerObj fmt 一分钟 var Go intNumber 指针

 作者: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 | 6 - 指针_空指针

Go的空指针

看完上面的逻辑,空指针就比较容易理解了,当定义了一个指针但是这个指针没有给它分配任何变量的时候,它的值就是空指针,在go里面为nil。

nil在概念上和其他语言的null、None、NULL基本一样,都是表示空值。

如果我们判断一个值是不是空值,则写成:

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

标签:pointerObj,fmt,一分钟,var,Go,intNumber,指针
From: https://blog.51cto.com/marsz/6223682

相关文章

  • Python Django 制作商品列表展示
    新建名为goods应用pythonmanage.pystartappgoods修改chapter1/settings.py文件在INSTALLED_APPS数组中添加goods在对象TEMPLATES.OPTIONS中添加django.template.context_processors.media添加三个常量MEDIA_URL='/media/'MEDIA_ROOT=os.path.join(BASE......
  • Go 使用 MongoDB 实现分页查询
    解决过程CSDN中搜到一个有Bug的代码import( "context" "time" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options")funcFind(database*mongo.Databas......
  • uniapp 打包aab上传到google play的时候google 登录报异常
    因为App上传到GooglePlay后,会被重新签名(PlayAppSigning)谷歌为你生成的签名SHA-1将谷歌为你生成的签名SHA-1证书指纹复制到本应用已创建的凭据SHA-1处,点击保存后,ClientID并没有变,所以不用重新打包。现在,不用等,你可以试试Google+登录了。Google+登录ok。参考地址:https......
  • 【代理设计模式详解】C/Java/JS/Go/Python/TS不同语言实现
    简介代理模式(ProxyPattern)是一种结构型设计模式,用一个类来代理另一个类或几个类的功能。在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。延迟初始化(虚拟代理)。如果你有一个偶尔使用的重量级服务对象,一直保持该对象运行会消耗系统资源时,可使用代理模式。访问......
  • COMP3310 Indexing a Gopher.
    COMP3310-Assignment2:IndexingaGopher.Background:Thisassignmentisworth15%ofthefinalmark.Itisdueby23:55Wednesday26AprilAESTLatesubmissionswillnotbeaccepted,exceptinspecialcircumstances.oExtensionsmustberequestedasea......
  • Go中的有限状态机FSM的详细介绍
    1、FSM简介1.1有限状态机的定义有限状态机(FiniteStateMachine,FSM)是一种数学模型,用于描述系统在不同状态下的行为和转移条件。状态机有三个组成部分:状态(State)、事件(Event)、动作(Action),事件(转移条件)触发状态的转移和动作的执行。动作的执行不是必须的,可以只转移状态,不指定任何......
  • mongodb使用自带命令工具导出导入数据
    记录mongo数据库用原生自带的命令工具使用json文件方式进行导入、导出的操作!在一次数据更新中,同事把老数据进行了清空操作,但是新的逻辑数据由于某种原因(好像是她的电脑中病毒了),一直无法正常连接数据库进行数据插入,然后下午2点左右要给甲方演示,所以要紧急恢复本地的部分数据......
  • 在mac上使用docker部署Mongo数据库
    拉取镜像打开网址https://hub.docker.com/,搜索mongo,https://hub.docker.com/_/mongo执行命令dockerpullmongo启动容器执行命令dockerimage,查看到mongo的tag是5.0.16启动命令dockerrun-dit--namemongo5-p27017:27017-v/Users/huidongma/data/mongodb:......
  • 1 Go语言介绍、 2 Go开发环境搭建 、3 第一个helloworld 、4 变量命名规范 、5 变量的
    目录1Go语言介绍2Go开发环境搭建3第一个helloworld4变量命名规范5变量的定义和使用1Go语言介绍#Go语言介绍Go即Golang,是Google公司2009年11月正式对外公开的一门编程语言Go是【静态强类型】语言,是区别于解析型语言的编译型语言(静态:类型固定强类型:不同类型不允许直接......
  • Go
    今日内容1Go语言介绍#Go语言介绍Go即Golang,是Google公司2009年11月正式对外公开的一门编程语言Go是【静态强类型】语言,是区别于解析型语言的编译型语言(静态:类型固定强类型:不同类型不允许直接运算)解析型语言——源代由解析器对代码进行解释执行编译型语言——源代码编......