首先我们要明确:
(1)基本数据类型:变量存的就是值,也叫值类型;

(2)获取变量的地址,用&,例如var num int,获取num的地址:#

(3)指针类型:变量存的是一个地址,这个地址指向的空间存的才是值,例如var ptr *int = #

(4)获取指针类型所指向的值,使用*,例如var *ptr int,使用*ptr获取ptr指向的值;

package main

import (
"fmt"
) func main() {
var num int = 1
var ptr *int = &num
fmt.Println("num的地址是:", &num)
fmt.Println("ptr的值是:", ptr)
fmt.Println("ptr的地址是:", &ptr)
}

ptr是一个指针,它的值是num的地址,同时,它自己也会有一个地址。我们可以通过地址定位到变量并改变变量的值:

package main

import (
"fmt"
) func main() {
var num int = 1
var ptr *int
fmt.Println("num的值是:", num)
ptr = &num
*ptr = 10
fmt.Println("num的值是:", num)
}

我们还可以通过切换指针的值来改变不同变量的值:注意指针类型与变量类型之间要匹配。

package main

import (
"fmt"
) func main() {
var num1 int = 1
var num2 int = 2
var ptr *int
fmt.Println("num1的值是:", num1)
fmt.Println("num2的值是:", num2)
ptr = &num1
*ptr = 10
ptr = &num2
*ptr = 20
fmt.Println("num1的值是:", num1)
fmt.Println("num2的值是:", num2)
}

指针使用细节:
(1)值类型,都有对应的指针,形式为*数据类型,比如int对应的指针就是*int,float32对应的指针就是*float;

(2)值类型包括:基本数据类型int系列、float系列、bool、string、数组和结构体;

值类型和引用类型:

(1)值类型包括:基本数据类型int系列、float系列、bool、string、数组和结构体;

(2)引用类型:指针、slice切片、map、管道channel、interface等;

值类型和引用类型的区别:
(1)值类型,变量直接存储,内存通常在中分配;

(2)引用类型:变量存储的是一个地址,这个地址对应的空间才是真正存储的数据值,内存通常在堆上分配,当没有任何变量引用这个地址时,改地址对应的数据空间就是一个垃圾,由GC来回收;

(八)golang--复杂类型之指针的更多相关文章

  1. Golang - 复合类型

    目录 Golang - 复合类型 1. 指针 2. new()和make() 3. 数组 4. slice 5. Map 6. 结构体 7. 结构体参数 Golang - 复合类型 1. 指针 go语 ...

  2. GO自定义类型与指针

    指针 定义:将地址形象化的称为“指针”.将地址形象化的称为“指针”.意思是通过它能找到以它为地址的内存单元.一个指针变量指向了一个值的内存地址.意思是通过它能找到以它为地址的内存单元.一个指针变量指向 ...

  3. Golang基本类型整理

    总是用的用的就模糊了,不知道基本的类型有哪些,看来要反反复复弄几次. Golang基本类型整理 基本类型以及定义变量需要注意的 对于基本类型的介绍,感觉这个博客讲的比较透彻,基本上都是从源码的角度来入 ...

  4. golang枚举类型 - iota用法拾遗

    在c#.java等高级语言中,经常会用到枚举类型来表示状态等.在golang中并没有枚举类型,如何实现枚举呢?首先从枚举的概念入手. 1.枚举类型定义 从百度百科查询解释如下:http://baike ...

  5. 不同类型的指针+1之后增加的大小不同(a,&a的地址是一样的,但意思不一样)

    main() { ]={,,,,}; ); printf(),*(ptr-)); } *(a+1)就是a[1],*(ptr-1)就是a[4], 执行结果是2, 5.&a+1不是首地址+1,系统 ...

  6. C++:不同类型的指针的本质与差异

    转自:http://blog.csdn.net/richerg85/article/details/10076365 指针的类型(The Type of a Pointer)            一 ...

  7. 直接修改托管堆栈中的type object pointer(类型对象指针)

    都知道.NET是一个强对象类型的框架. 那么对于对象类型又是怎么确定的呢. 最初的我简单认为数据的类型就是定义时字段的类型修饰决定的(回来发现这种观点是绝对错误的) 我们知道引用对象存储在托管堆栈中, ...

  8. 为什么C++类定义中,数据成员不能被指定为自身类型,但可以是指向自身类型的指针或引用?为什么在类体内可以定义将静态成员声明为其所属类的类型呢 ?

    static的成员变量,不是存储在Bar实例之中的,因而不会有递归定义的问题. 类声明: class Screen: //Screen类的声明 1 类定义: class Screen{ //Scree ...

  9. C# CLR via 对象内存中堆的存储【类型对象指针、同步块索引】

    最近在看书,看到了对象在内存中的存储方式. 讲到了对象存储在内存堆中,分配的空间除了类型对象的成员所需的内存量,还有额外的成员(类型对象指针. 同步块索引 ),看到这个我就有点不懂了,不知道类型对象指 ...

  10. LPVOID 没有类型的指针

    可以将LPVOID类型的变量赋值给任意类型的指针,比如在参数传递时就可以把任意类型传递给一个LPVOID类型为参数的方法,然后在方法内再将这个“任意类型”从传递时的“LPVOID类型”转换回来. 示例 ...

随机推荐

  1. LeetCode正则表达式匹配

    题目描述 给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配. '.' 匹配任意单个字符 '*' 匹配零个或多个前面的那一个元素 所谓匹配,是要涵盖 整个 ...

  2. 快学Scala 第十六课 (shell调用,正则表达式,正则表达式组,stripMargin妙用)

    shell调用:(管道符前加#号,执行shell用!) import sys.process._ "ls -al" #| "grep x" ! 正则表达式:(r ...

  3. idea中的java web项目(添加jar包介绍)和java maven web项目目录结构

    java web项目 web项目下web根目录名称是可以更改的 idea中新建java web项目,默认src为Sources Root,当然也可以手动改,在Sources Root下右键只能新建Pa ...

  4. docker升级后启动报错400 Client Error: Bad Request ("Unknown runtime specified docker-runc")

    宝塔面板docker升级后启动容器时报错400 Client Error: Bad Request ("Unknown runtime specified docker-runc" ...

  5. SpringBoot源码分析之---SpringBoot项目启动类SpringApplication浅析

    源码版本说明 本文源码采用版本为SpringBoot 2.1.0BUILD,对应的SpringFramework 5.1.0.RC1 注意:本文只是从整体上梳理流程,不做具体深入分析 SpringBo ...

  6. B-概率论-常见的概率分布模型

    目录 常见的概率分布模型 一.离散概率分布函数 二.连续概率分布函数 三.联合分布函数 四.多项分布(Multinomial Distribution) 4.1 多项分布简介 4.2 多项分布公式解析 ...

  7. PhpSpreadsheet 导出特定格式 — 广告请款单

    需求说明 最近需要实现一个导出这种格式的Excel表单,之前都有用过导出Excel的功能,但大都是表头+数据的形式,只用于获取数据,没有太多样式要求,不用合并单元格.合并居中等,也不用对每一行数据特异 ...

  8. 公共DNS性能大比拼

    ​ 今天中午,访问Gitee突然访问不进去,然后收到红薯通知:阿里云停止了 Gitee.com 的域名解析. ​ ​ 码云官方也随后给出解决办法 没有任何提示,没有任何提前通知,阿里云停止了 Gite ...

  9. Windows系统调用中API从3环到0环(下)

     Windows内核分析索引目录:https://www.cnblogs.com/onetrainee/p/11675224.html Windows系统调用中API从3环到0环(下) 如果对API在 ...

  10. 关于参加AWD攻防比赛心得体会

    今天只是简单写下心得和体会 平时工作很忙 留给学习的时间更加珍少宝贵. 重点说下第二天的攻防比赛吧  . 三波web题 .涉及jsp,php,py. 前期我们打的很猛.第一波jsp的题看到有首页预留后 ...