首先为什么要讲go的指针和切片放在一起?

因为go指针和切片都是引用类型

引用类型就是说切片和指针保存的只是内存的地址,而不是具体的值,效率在大数据读取方面效率会高很多。

1、怎么定义一个切片

方法1:

    var a []int
    a = make([]int, 0)
    //给切片赋值
    a[0] = 100
注意,这种方式需要对切片进行初始化,否者这个切片不能被使用
 
方法2:
    var a []int = make([]int, len)
 
切片的使用和数组一样
    a[0] = 100
    fmt.Println(a)
 
2、怎么定义一个指针
方法1  

var p *string
    p = new(string)
    *p = "abc"

方法2

var str string = "hello"
    p = &str

 
下面是一个例子
func test() {
//定义一个切片
var a []int
//给a分配一个内存(初始化)
a = make([]int, 1)
//给切片赋值
a[] =
fmt.Println(a) //定义一个切片类型的指针
var p *[]int
//给指针初始化
p = new([]int)
//给切片初始化,分配一个切片内存
(*p) = make([]int, )
//给切片赋值
(*p)[] =
fmt.Println(p) p = &a
(*p)[] =
      (*p)[1] = 10
      (*p)[2] = 11
      (*p)[3] = 12
      (*p)[4] = 13
      fmt.Println(a)
      fmt.Printf("len is %d\n", len(a))
      for i := 0; i < len(a); i++ {
          fmt.Printf("num is %d\n", a[i])
      }
}

func main() {
test()
}

这个例子一定要注意的是当指针赋值的是切片类型,那么指针和切片都需要做初始化,否则会报错

golang的指针和切片的更多相关文章

  1. golang 数组以及slice切片

    老虞学GoLang笔记-数组和切片   数组 Arrays 数组是内置(build-in)类型,是一组同类型数据的集合,它是值类型,通过从0开始的下标索引访问元素值.在初始化后长度是固定的,无法修改其 ...

  2. golang笔记——数组与切片

    一.切片的定义 我们可以从数组(go语言中很少直接使用数组)或者切片来初始化一个新的切片,也可以直接通过 make 来初始化一个所有元素为默认零值的切片. //1.通过数组来初始化切片 arr := ...

  3. 学习Golang语言(6):类型--切片

    学习Golang语言(1): Hello World 学习Golang语言(2): 变量 学习Golang语言(3):类型--布尔型和数值类型 学习Golang语言(4):类型--字符串 学习Gola ...

  4. 『GoLang』数组与切片

    数组 数组是具有相同唯一类型的一组已编号且长度固定的数据项序列(这是一种同构的数据结构):这种类型可以是任意的原始类型例如整型.字符串或者自定义类型. 数组长度必须是一个常量表达式,并且必须是一个非负 ...

  5. 深入学习golang(1)—数组与切片

    数据(array)与切片(slice) 数组声明: ArrayType   = "[" ArrayLength "]" ElementType . 例如: va ...

  6. golang中数组与切片的区别

    初始化:数组需要指定大小,不指定也会根据初始化的自动推算出大小,不可改变 数组: a := [...],,} a := [],,} 切片: a:= [],,} a := make([]) a := m ...

  7. Golang之指针(point)再探索

    先记录代码 package main import "fmt" /* 声明指针 *T 是指向类型T的值的指针变量的类型 */ func main() { //b := 255 // ...

  8. GoLang笔记-数组和切片,本质是就是长度不可变的可变的区别

    数组 Arrays 数组是内置(build-in)类型,是一组同类型数据的集合,它是值类型,通过从0开始的下标索引访问元素值.在初始化后长度是固定的,无法修改其长度.当作为方法的入参传入时将复制一份数 ...

  9. golang之数组与切片

    数组 数组可以存放多个同一类型数据,数组也是一种数据类型,在Go中,数组是值类型. 数组的定义: var 数组名 [数组大小]数据类型 var a [5]int 赋初值   a[0] = 1    a ...

随机推荐

  1. form之action的绝对路径与相对路径

    1.当你的form要提交到你自己的站点之外的URL的时候,就采取绝对路径: <form action="http://www.xxx.yyy:zzzz/mmm/nn/kkk.jsp&q ...

  2. FileInputStream与FileOutputStream类

    FileInputStream和FileOutputStream类分别用来创建磁盘文件的输入流和输出流对象,通过它们的构造函数来指定文件路径和文件名. 创建FileInputStream实例对象时,指 ...

  3. CodeForces 35D Animals

    G - Animals Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit  ...

  4. androidStudio简便安装

    最近在公司由eclipse换为androidstudio,说句实话,androidstudio还是蛮好用的,但是自己刚刚安装的时候遇到很多的问题,问了度娘,各种说法都有,还是捣鼓不得,于是自己尝试,弄 ...

  5. 查看、分析memcached使用状态

    访问量上升,数据库压力大,怎么办?好办法是在中间挡一层缓存!这个缓存要求高效,不能比数据库慢,否则服务质量受影响:如果能把数据用hash打散存储到硬盘,也是可以的,不过在内存越来越便宜的今天,还是使用 ...

  6. Hadoop-2.2.0中文文档—— MapReduce 下一代 - Encrypted Shuffle

    简单介绍 Encrypted Shuffle capability (加密洗牌功能? )同意用HTTPS 和 可选的client验证 (也称作双向的 HTTPS, 或有client证书的 HTTPS) ...

  7. 更新加子查询加相同的表解决办法 mysql

    UPDATE ofuser SET auid = '0' WHERE uid in (SELECT uid FROM (select tmp.* from ofuser tmp)a WHERE aui ...

  8. java.lang下面有一个接口:Comparable(可比较的)

    对于自定义对象,Sort不知道规则,所以无法比较.这种情况下一定要定义排序规则.方式有两种: java.lang下面有一个接口:Comparable(可比较的) 可以让自定义对象实现一个接口,这个接口 ...

  9. Unity5 AssetBundle打包加载及服务器加载

    Assetbundle为资源包不是资源 打包1:通过脚本指定打包 AssetBundleBuild ab = new AssetBundleBuild                         ...

  10. php -- 魔术方法 之 调用方法:__call()、__callStatic()

    方法重载:当调用一个不存在或者权限不够的方法的时候,会自动调用__call()方法 public function __call($name,$args){}  :用对象调用方法 public sta ...