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

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是空的,且不能赋值

  • 修改map m的一个元素或者向map m中插入一个元素m[key] = elem
  • 获取map m中的一个元素elem = m[key]
  • 删除元素 delete(m,key)
  • 检测某个键是否存在elem, ok := m[key]如果key在m中ok为true,elem为key对应的value;否则,ok为false,elem为nil

Range关键字

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

你可能感兴趣的:(Golang基础(三)——复杂类型)