分享
  1. 首页
  2. 文章

golang笔记——array

tianyajuanke · · 1921 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

1、定义一个 array

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

package main
import (
 "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语言的数组存储结构是,首部存储数组长度,然后后面是实际数据。


有疑问加站长微信联系(非本文作者)

本文来自:博客园

感谢作者:tianyajuanke

查看原文:golang笔记——array

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
1921 次点击
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏