一、指针的相关概念说明

  • 变量:是基本类型,变量存的就是值,也叫值类型
  • 地址:用于引用计算机的内存地址,可理解为内存地址的标签,通俗一点讲就是一间房在小区里的门牌号。如下图①
  • 指针:指针变量存的是一个地址,这个地址指向的空间存的才是值(表示地址的指向,指针是一个指向另一个变量内存地址的值)。如下图②
  • &:取地址符,例如:{指针}:=&{变量}。如下图②
  • * :取值符,例如:{变量}:=*{指针}。如下图②

图①

图②

二、指针的使用案例

指针使用流程:

  • 定义指针变量。
  • 为指针变量赋值。
  • 访问指针变量中指向地址的值。

在指针类型前面加上 * 号(前缀)来获取指针所指向的内容。

案例一

package main

import "fmt"

func main() {
var a int= 1 /* 声明实际变量 */
var ip *int /* 声明指针变量 */ ip = &a /* 指针变量的存储地址 */ fmt.Printf("a 变量的地址是: %x\n", &a ) /* 指针变量的存储地址 */
fmt.Printf("ip 变量的存储地址: %x\n", ip ) /* 使用指针访问值 */
fmt.Printf("*ip 变量的值: %d\n", *ip )
}
a变量的地址是:0xc042052058
ip变量的存储地址是0xc042052058
*ip变量的值是:

案例二

package main
import "fmt"
// 我们用两个不同的例子来演示指针的用法
// zeroval函数有一个int类型参数,这个时候传递给函数的是变量的值
func zeroval(ival int) {
ival =
}
// zeroptr函数的参数是int类型指针,这个时候传递给函数的是变量的地址
// 在函数内部对这个地址所指向的变量的任何修改都会反映到原来的变量上。
func zeroptr(iptr *int) {
*iptr =
}
func main() {
i :=
fmt.Println("initial:", i) zeroval(i)
fmt.Println("zeroval:", i) // &操作符用来取得i变量的地址
zeroptr(&i)
fmt.Println("zeroptr:", i) // 指针类型也可以输出
fmt.Println("pointer:", &i)
}
initial:
zeroval:
zeroptr:
pointer: 0xc042052058

空指针

package main
import (
"fmt"
)
func main(){
//下面一行代码注释就是空指针,那么值为0
var a int =
var ip *int = &a fmt.Printf("ip的值为:%x", ip) if (ip == nil) {
fmt.Printf("是空指针")
} else {
fmt.Printf("非空指针")
} }

Golang指针基本介绍及使用案例的更多相关文章

  1. Golang指针与unsafe

    前言 我们知道在golang中是存在指针这个概念的.对于指针很多人有点忌惮(可能是因为之前学习过C语言),因为它会导致很多异常的问题.但是很多人学习之后发现,golang中的指针很简单,没有C那么复杂 ...

  2. Golang的运算符优先级实操案例

    Golang的运算符优先级实操案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.运算符优先级案例 运算符是用来在程序运行时执行数学或逻辑运算的,在Go语言中,一个表达式可以包 ...

  3. TODO:Golang指针使用注意事项

    TODO:Golang指针使用注意事项 先来看简单的例子1: 输出: 1 1 例子2: 输出: 1 3 例子1是使用值传递,Add方法不会做任何改变:例子2是使用指针传递,会改变地址,从而改变地址. ...

  4. dubbo介绍及其使用案例

    dubbo介绍及其使用案例 1. Dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案.简单的说,dubbo就是个服务框架,如果 ...

  5. Golang的进制转换实战案例

    Golang的进制转换实战案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.常用进制概述 1>.进制概述 进制也就是进位制,是人们规定的一种进位方法.举个例子:二进制就 ...

  6. Golang的常量定义及使用案例

    Golang的常量定义及使用案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.常量的定义 package main import ( "fmt" ) fu ...

  7. Golang的变量定义及使用案例

    Golang的变量定义及使用案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.变量的定义 package main import "fmt" func m ...

  8. Golang Context 详细介绍

    Golang context 本文包含对context实现上的分析和使用方式,分析部分源码讲解比价多,可能会比较枯燥,读者可以直接跳过去阅读使用部分. ps: 作者本着开源分享的精神撰写本篇文章,如果 ...

  9. Golang的Context介绍及其源码分析

    简介 在Go服务中,对于每个请求,都会起一个协程去处理.在处理协程中,也会起很多协程去访问资源,比如数据库,比如RPC,这些协程还需要访问请求维度的一些信息比如说请求方的身份,授权信息等等.当一个请求 ...

随机推荐

  1. Java通过POI生成Excel

    import java.io.FileOutputStream; import java.text.SimpleDateFormat; import java.util.ArrayList; impo ...

  2. Nginx参数调优

    (1)nginx运行工作进程个数,一般设置cpu的核心或者核心数x2 如果不了解cpu的核数,可以top命令之后按1看出来,也可以查看/proc/cpuinfo文件 grep ^processor / ...

  3. CentOS6.5安装Elasticsearch1.7.5

    1. 首页到官方网站下载最新安装包 https://www.elastic.co/downloads/elasticsearch  elasticsearch-1.7.5.tar.gz 2. 将软件包 ...

  4. 关于promise自己的理解

    参考文档:http://es6.ruanyifeng.com/#docs/promise#Promise-%E7%9A%84%E5%90%AB%E4%B9%89 ES6 规定,Promise对象是一个 ...

  5. cocos2d-x JS 加载播放Studio帧动画的两种方法

    昨天懵逼的搞了两个多小时(百度无果/没看出什么矛头),自己琢磨总算搞出来了   1.  var levelUpJson = ccs.load("res/LevelUp.json") ...

  6. unity3d-游戏实战突出重围,第三天 绘制数字

    实现效果: 准备资源 using UnityEngine; using System.Collections; public class hznum : MonoBehaviour { //存储图片资 ...

  7. EL的隐含对象(三)【访问环境信息的隐含对象】

    EL中提供了6个访问环境信息的隐含对象.分别是: (1)param对象 param对象用于获取请求参数的值,应用在参数值只有一个的情况.在应用param对象时,返回的结果为字符串. 例:在JSP页面中 ...

  8. 第一章 HTML基本标签

    1.HTML:HTML:超文本标签语言(标签又称标记.元素).浏览器:“解释和执行”HTML源码的工具 (运行网页的工具APP).客户端:享受服务的计算机服务器:提供服务的计算机 2.基本框架(网页最 ...

  9. AngularJs ng-change事件/指令(转)

    from:http://blog.csdn.net/u011127019/article/details/52564111 定义和用法 ng-change 指令用于告诉 AngularJS 在 HTM ...

  10. 10.for

    要遍历一个范围(如数组或表),使用 for 循环.在数组上迭代时,当前数组元素存储在循环变量中.在遍历字典时, index 存储在循环变量中. (in 内容测试) for x in [5, 7, 11 ...