博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
golang笔记——array
阅读量:5879 次
发布时间:2019-06-19

本文共 1466 字,大约阅读时间需要 4 分钟。

1、定义一个 array

  数组长度也是类型的一部分,比如长度为3的int数组与长度为5的int数组,并不是同一类型。

package mainimport (    "strconv" //GO语言中将 int 转化成 string 比较麻烦,通常使用 strconv.Itoa(i))//格式化输出一个数组,因为不同长度的数组属于不同类型,这里只能用切片作为参数,调用时将数组转换成切片传入即可func print_array(arr []int) {    var str string    str = "["    for k, v := range arr {        if k == len(arr)-1 {            str = str + strconv.Itoa(v)        } else {            str = str + strconv.Itoa(v) + ","        }    }    str += "]"    println(str)}func main() {    //1、指明数组长度: 初始化的元素个数应该小于等于数组长度,否则会编译出错,如果初始化的元素长度小于数组个数,则未初始化部分系统会自动补为默认零值    array1 := [3]int{} //相当于 [0,0,0]    print_array(array1[:])    array2 := [3]int{
1, 2} //相当于 [1,2,0] print_array(array2[:]) //arr := [3]int{1, 2, 3, 4} //初始化元素个数如果大于数组长度,则会编译出错 array3 := [3]int{
1: 2, 2: 3} //相当于[0,2,3] ,同 struct 一样,GO同样支持初始化时指定key,这里的key表示索引,未初始化的索引值为默认零值 print_array(array3[:]) //2、不指明数组长度: 数组的长度由初始化的元素决定 array4 := [...]int{
1, 2, 3} //相当于 [1,2,3] print_array(array4[:]) array5 := [...]int{
1: 2, 2: 3} //相当于 [0,2,3] print_array(array5[:])}

 

2、数组操作

  通过数组名和数组下标即可进行访问和修改操作,通过 for .. range 可以进行遍历操作。因为数组的长度是固定的,也没有容量概念,所以概念和使用上都是比较简单的。

  for ... range 可以用于 array\slice\map 的遍历,如果对 string 进行遍历,则默认得到的 value 值是对应字符的ASCII码,这一点需要注意。

//以下会输出 97,98,99,100,    s := "abcd"    for _, v := range s {        print(v, ",")    }

 

3、数组的特性

  GO语言中的数组是值类型,当赋值给另一个数组变量或作为方法参数传递时,都会复制数组的副本。

  注意,与C语言不同,数组的名字不代表数组的第一个元素的指针,这两种语言的数组存储结构不同,GO语言的数组存储结构是,首部存储数组长度,然后后面是实际数据。

 

  

 

转载地址:http://jndix.baihongyu.com/

你可能感兴趣的文章
长春理工大学第十四届程序设计竞赛(重现赛)I.Fate Grand Order
查看>>
好作品地址
查看>>
[翻译]Protocol Buffer 基础: C++
查看>>
runloop与线程的关系
查看>>
[Bzoj2246]迷宫探险(概率+DP)
查看>>
[译] 感受 4px 基线网格带来的便利
查看>>
oracle常用函数
查看>>
MYBATIS
查看>>
详解消息队列的设计与使用
查看>>
iOS 项目优化
查看>>
筛选出sql 查询结果中 不包含某个字符
查看>>
8进制与16进制
查看>>
使用Sqoop从mysql向hdfs或者hive导入数据时出现的一些错误
查看>>
mybatis:Invalid bound statement (not found)
查看>>
电脑中毒的现象
查看>>
django表单操作之django.forms
查看>>
webSocket vnc rfb
查看>>
列表推导式 生成器表达式
查看>>
控制子窗口的高度
查看>>
Linux 防火墙iptables命令详解
查看>>