func pointer_test() {
//空指针,输出为nil
var p *int
fmt.Printf("p: %v\n", p)
//指向局部变量,变量值初始为0
var i int
p = &i
fmt.Printf("p: %v,%v\n", p, *p)
//通过指针修改变量数值
*p =
fmt.Printf("p: %v,%v\n", p, *p)
//数组的初始化及输出
m := []int{, , }
fmt.Printf("m:%v--%v,%v,%v\n", m, m[], m[], m[])
//指针数组的初始化及输出
//j, k, l := 3, 4, 5
//x := [3]*int{&j, &k, &l}
x := []*int{&m[], &m[], &m[]}
fmt.Printf("x:%v,%v,%v\n", x[], x[], x[])
fmt.Printf("*x:%v,%v,%v\n", *x[], *x[], *x[]) var n []*int
n = x
fmt.Printf("n:%v,%v,%v\n", n[], n[], n[])
//指向数组的指针,也即二级指针的使用
y := []*[]*int{&x}
fmt.Printf("y:%v,%v\n", y, y[])
fmt.Printf("*y[0]:%v\n", *y[])
fmt.Printf("*y[][]:%v,%v,%v\n", *y[][], *y[][], *y[][])
/*
*X -> v
[3]X -> [v0][v1][v2]
[]X -> [v0]...[vi]
[3]*X -> [p0][p1][p2]
| | |
j k l
[]*[3]*X -> [n0]...[ni]
| ... |
[p0]->j
[p1]->k
[p2]->l
*/
} type Student struct {
name string
id int
score uint
} func memery_test() {
//new分配出来的数据是指针形式
p := new(Student)
p.name = "China"
p.id =
p.score =
fmt.Println(*p)
//var定义的变量是数值形式
var st Student
st.name = "Chinese"
st.id =
st.score =
fmt.Println(st)
//make分配slice、map和channel的空间,并且返回的不是指针
var ptr *[]Student
fmt.Println(ptr) //ptr == nil
ptr = new([]Student) //指向一个空的slice
fmt.Println(ptr)
*ptr = make([]Student, , )
fmt.Println(ptr)
stu := []Student{{"China", , }, {"Chinese", , }, {"Chince", , }}
fmt.Println(stu)
}

golang学习之指针、内存分配的更多相关文章

  1. C/C++指针内存分配小细节

    char *pc = NULL; pc = new char[0]; pc[0] = '1'; 相信初学者看见上面这段代码,都会觉得奇怪,new char[n]中的n指定给指针变量分配多少内存空间,而 ...

  2. 《深入理解Java虚拟机》学习笔记之内存分配

    JVM在执行Java程序的过程中会把它所管理的内存划分若干个不同的数据区域,如下图: 大致可以分为两类:线程私有区域和线程共享区域. 线程私有区域 程序计数器(Program Counter Regi ...

  3. C++学习011-常用内存分配及释放函数

    C++用有多种方法来分配及释放内存,下面是一些经常使用的内存分配及释放函数 现在我还是一个技术小白,一般用到也指示 new+delete 和 malloc和free 其他的也是在学习中看到,下面的文字 ...

  4. 【C/C++学院】0828-数组与指针/内存分配/数据结构数组接口与封装

    [送给在路上的程序猿] 对于一个开发人员而言,可以胜任系统中随意一个模块的开发是其核心价值的体现. 对于一个架构师而言,掌握各种语言的优势并能够运用到系统中.由此简化系统的开发,是其架构生涯的第一步. ...

  5. C语言学习笔记--动态内存分配

    1. 动态内存分配的意义 (1)C 语言中的一切操作都是基于内存的. (2)变量和数组都是内存的别名. ①内存分配由编译器在编译期间决定 ②定义数组的时候必须指定数组长度 ③数组长度是在编译期就必须确 ...

  6. JVM学习总结四——内存分配策略

    之前几篇我们介绍了jvm的内存模型以及垃圾回收机制,而本篇我们将介绍几个JVM中对象在分配内存是应该遵循的策略.毕竟,想要去优化程序,不仅要考虑垃圾回收的过程,还要从对象内存分配的角度减少gc的代价. ...

  7. memcached学习——memcached的内存分配机制Slab Allocation、内存使用机制LRU、常用监控记录(四)

    内存分配机制Slab Allocation 本文参考博客:https://my.oschina.net/bieber/blog/505458 Memcached的内存分配是以slabs为单位的,会根据 ...

  8. Golang: map类型切片内存分配

    切片ik通过索引访问,然后为每个map分配内存: 切片jk通过获得切片内每个元素的拷贝来分配内存,并未成功为切片内每个map分配内存,使用时赋值也就失败了 1 package main 2 3 imp ...

  9. 【转载】JVM 学习——垃圾收集器与内存分配策略

    本文主要是对<深入理解java虚拟机 第二版>第三章部分做的总结,文章中大部分内容都来自这章内容,也是博客 JVM 学习的第二部分. 简述 说到垃圾收集(Garbage Collectio ...

随机推荐

  1. 用cxSelect插件补充一下回显过滤项功能

    这个在DJANGO里,最好在过滤之后,让用户知道自己过滤的选择.所以要定位默认值. 1,在HTML文件里显示默认值: <form class="uk-form" name=& ...

  2. java.util.concurrent包API学习笔记

    newFixedThreadPool 创建一个固定大小的线程池. shutdown():用于关闭启动线程,如果不调用该语句,jvm不会关闭. awaitTermination():用于等待子线程结束, ...

  3. 安装eclipse for JavaEE 后的一些设置

    以下的设置是相对于一个workspace而设置的,如果更换了workspace则要重新设置. 1. 设置Text Editors: 2. 设置Content Assist 的快捷键(比较方便) 3. ...

  4. Hibernate逍遥游记-第12章 映射值类型集合-004映射Map(<map-key>)

    1. 2. <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate ...

  5. Nim语言:Pascal的语法,Python的缩进

    http://nim-lang.org/ 德国人Andreas Rumpf的作品,原因是他对过去使用的每种语言都不满意(Pascal也不满意?).以前叫Nimrod语言,从0.96版本开始改名为Nim ...

  6. UNIX相关知识

    UNIX UNIX的设计目标是小而美:希望能在任何小系统上执行,而核心只提供必不可少的一些功能,其他的则根据需要加上去.这已经成为操作系统的一种设计哲学. The Open Group持有UNIX商标 ...

  7. 项目用到异步加载头像LasyList

    package com.leo.proforjob; import android.content.Context; import android.graphics.drawable.Drawable ...

  8. html5 touch事件实现触屏页面上下滑动(一)

    最近做的做那个app的项目由于用overflow:hidden导致了很多问题,于是决定研究下html5的touch事件.想找个全面点的帖子真是难死了,虽然好多关于html5 touch的文章但大多都是 ...

  9. Java知识积累——单元测试和JUnit(一)

    说起单元测试,刚毕业或者没毕业的人可能大多停留在课本讲述的定义阶段,至于具体是怎么定义的,估计也不会有太多人记得.我们的教育总是这样让人“欣 慰”.那么什么是单元测试呢?具体科学的定义咱就不去关心了, ...

  10. How to Determine the Version of Oracle XML Publisher for Oracle E-Business Suite 11i and Release 12 (Doc ID 362496.1)

    Modified: 29-Mar-2014 Type: HOWTO In this DocumentGoal   Solution   1. Based upon an output file gen ...