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. oracle实现自增列

    手动创建了一个表格,但是id字段无法实现自增,查看了一下网上的信息,没有找到满意的答案.一下是自己总结摸索的,仅供参考 第一步:手动创建表和列中的字段 (本例中,表明 T_VIDEO,第一个字段:ID ...

  2. WAF安恒

    http://wenku.baidu.com/view/c242927f581b6bd97e19ea1a.html?from=search

  3. ibatis框架的sqlmapclient接口

    SqlMapClient,是iBatis中的重要接口,这个接口涉及到对SQL映射的执行和批处理. 现在,就先了解它的对query开头方法的定义. 首先是 queryForList 方法: //指定SQ ...

  4. web服务器、应用服务器、http服务器区别

    引用 WEB服务器.应用程序服务器.HTTP服务器有何区别?IIS.Apache.Tomcat.Weblogic.WebSphere都各属于哪种服务器     Web服务器的基本功能就是提供Web信息 ...

  5. QC、IQC、IPQC、FQC、OQC、QA分别的定义

    QC:即英文(Quality Control)的简称,中文意义是品质控制,其在ISO8402:1994的定义是“为达到品质要求所采取的作业技术的活动”.有些推行ISO9000的组织会设置这样一个部门或 ...

  6. OpenCV码源笔记——Decision Tree决策树

    来自OpenCV2.3.1 sample/c/mushroom.cpp 1.首先读入agaricus-lepiota.data的训练样本. 样本中第一项是e或p代表有毒或无毒的标志位:其他是特征,可以 ...

  7. C#实现GDI+基本图的缩放、拖拽、移动

    C#实现GDI+基本图的缩放.拖拽.移动示例代码如下: using System;using System.Collections.Generic;using System.ComponentMode ...

  8. 修练8年C++面向对象程序设计之体会

    http://pcedu.pconline.com.cn/empolder/gj/c/0504/609482_1.html

  9. sort+结构体实现二级排序

    之前介绍的sort函数由于其效率较高,使用较为简单让我用起来那叫一个爽,今天再写一篇使用sort+结构体实现二级排序的方法. 还是先想个问题吧,比如我想输入5个同学的名字和身高,然后得到他们身高的降序 ...

  10. 8天学通MongoDB——第五天 主从复制

    从这一篇开始我们主要讨论mongodb的部署技术. 我们知道sql server能够做到读写分离,双机热备份和集群部署,当然mongodb也能做到,实际应用中我们不希望数据库采用单点部署, 如果碰到数 ...