Golang基础(三)——复杂类型

2017-11-30  本文已影响0人  Eric木子

Golang基础(三)——复杂类型

@([07] golang)[Go总结]

[TOC]

指针

定义

指针变量可以指向任何一个值的内存地址。

声明

var var_name *var-type

var p *int

类型*T是指向类型T的值的指针。零值为nil

指针的使用

使用流程

在一个变量前加&号来获取变量的内存地址。
在指针类型前面加*号来获取指针所指向的内容。

如果在一个指针类型的变量前面加&号,就会得到一个新的内存地址(指针),这个新的指针指向的是另一个指针,则称这个指针变量为指向指针的指针变量。

访问指向指针的指针变量值需要加两个*号。

结构体

定义:结构体是一个字段的集合
结构体字段使用点号访问

数组

slice (切片)

slice会指向一个序列的值,并且包含长度信息。
[ ]T 是一个元素类型为T的切片

p := []int{2, 3, 5, 7, 11, 13}

切片的定义

  1. var identifier [] type
  2. 通过make()函数定义var slice1 []type = make([]type,len),其中len代表切片初始长度。
  3. 指定切片容量make[]T,length,capacity
slice截取

slice可以重新截取,创建一个新的slice值指向相同的数组。
s[l:h] 表示从数组的l到h-1的slice元素。注意:包含左侧l,但不包含右侧 h

如果缺省下限则默认下限为0。即 s[:h] 等于 s[0:h]
如果缺省上限则默认上限为切片长度。即s[l:] 等于 s[l:len(s)]

slice相关函数

len() 函数
获取切片长度
cap()函数
获取切片容量
append() 函数
向切片追加新元素
copy()函数
拷贝切片

map

map 是一种无序的键值对的集合,key-value形式。
map是通过hash表实现的。
map在使用之前必须用make来创建(不是new);
值为nil的map是空的,且不能赋值

Range关键字

range用于for循环中迭代数组、切片、链表或集合的元素。
在数组和切片中返回元素索引,元素值,在集合中返回key

上一篇下一篇

猜你喜欢

热点阅读