返回
北京兄弟连IT
置顶
该校与厚学网暂未合作,平台不保证课程的真实有效性,如有侵权等争议,请及时与厚学网联系处理
招生热线:400-656-1390

学校地址:北京市昌平区回龙观文华西路育荣教育园区兄弟连IT教育

兄弟连Go语言培训-数组与切片

48 2018-08-22 15:00:00

学习笔记

  “区块链是一门集合密码学、共识算法、智能合约、超级账本等多门技术的复杂性综合学科。”尹正表示,区块链培训机构的师资质量及其对区块链行业的认知水平参差不齐,普通消费者也无从考究。

 

  Go语言主要用作服务器端开发,其定位是用来开发“大型软件”的,适合于很多程序员一起开发大型软件,并且开发周期长,支持云计算的网络服务。Go语言能够让程序员开发,并且在软件不断的增长过程中,它能让程序员更容易地进行维护和修改。它融合了传统编译型语言的性和脚本语言的易用性和富于表达性。

数据(array)与切片(slice

数组声明:

 

ArrayType   = "[" ArrayLength "]" ElementType .

 

例如:

var a [32] int

 

var b [3][5] int

 

GoC中,数组的工作方式有几个重要的差别。在Go中,

 

1)数组是值类型。将一个数组赋值给另一个,会拷贝所有的元素。

 

2) 如果你给函数传递一个数组,其将收到一个数组的拷贝,而不是它的指针。

 

3)数组的大小是其类型的一部分,类型[10]int[20]int是不同的。数组长度在声明后,就不可更改。

 

切片声明:

 

SliceType = "[" "]" ElementType .

 

例如:

 

var a []int

 

没有初始化的slicenil

 

切片(slice)对数组进行封装,实际上,切片可以看成大小可以动态变化的数组,这一点类似C++std::vector。就像std::vector在实际C++编程中大量使用一样,Go中大多数的数组编程都是通过切片完成,而不是简单数组。

 

一般来说,有两种方式来初始化切片:

 

1)通过数组

 

var myArray [10]int = [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

 

var mySlice []int = myArray[:5]

 

2)通过make

 

语法:

make([]T, length, capacity)

 

创建一个初始长度为5,容量为10为切片,切片的每个元素都为0

 

slice1 := make([]int, 5, 10)

 

创建一个长度为5的切片,并初始化切片的每个元素:

 

slice2 := []int{1, 2, 3, 4, 5}

 

对于切片,重要的特点就是长度是可变的:

 

slice2 := []int{1, 2, 3, 4, 5}

 

fmt.Println("slice:", slice2)

 

slice2 = append(slice2, 6)

 

fmt.Println("slice:", slice2)

 

输出:

 

slice: [1 2 3 4 5]

 

slice: [1 2 3 4 5 6]

 

函数appendGO专门为切片增加元素而提供的一个内建函数。

 

切片持有对底层数组的引用,如果你将一个切片赋值给另一个,二者都将引用同一个数组。如果函数接受一个切片作为参数,那么其对切片的元素所做的改动,对于调用者是可见的,好比是传递了一个底层数组的指针

 

func (f *File) Read(b []byte) (n int, err error)

 

这个os.FileRead方法,它接受一个切片参数,切片中的长度已经设定了要读取的数据的上限。对于C/C++,需要同时提供一个缓冲区的指针,和缓冲区的大小:

 

int read(File* f, char* buf, int len)

 

从这里可以看到,GO的写法要简单一些。

 

 

切片(数组)的遍历

go语言中,遍历切片或者数组,有两种方式:

 

传统方式:

 

for i := 0; i

 

fmt.Println("mySlice[", i, "] =", mySlice[i])

 

}

 

 

使用range表达式

 

range表达式有两个返回值,个是索引,第二个是元素的值:

 

for i, v := range mySlice {

 

fmt.Println("mySlice[", i, "] =", v)

 

}

 

使用range让代码更加简洁,所以在go编程中也更加常用。

高能预警,兄弟连教育区块链直播课程8月持续火爆来袭!

原价1188元的12节区块链进阶课程,现仅需1元!

还可取《Go语言基础实战项目开发》与《Go语言实战项目开发》教材两本!!

限量!!先到先得!!

http://www.ydma.cn/open/course/24



文中图片素材来源网络,如有侵权请联系删除
来源:北京兄弟连IT
热门课程 全部课程

热门动态

申请免费试听

只要一个电话

我们为您免费回电

立即申请