golang 基础(thirteen)指针

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

square-gopher.png

数组

定义数组需要指定数组的大小和数组元素的类型

    var arr1 [5]int 
    arr2 := [3]int{1,3,5}
    arr3 := [...]int{2,4,6,8,10}

    fmt.Println(arr1,arr2,arr3)
  • 定义数组变量如果不给初始值,int 型会默认每一个元素值为 0
  • 使用:= 定义数组需要使用 {} 为素组时给出初始值
  • 也可以在定义数组是让编译器根据初始化复制元素数量来决定数组的长度,[...]来代替[数组长度]


    golang-5.png

多维数组

var grid [4][5]int 4 个有 5 东西的集合

遍历数组

for i:= 0; i < len(arr3); i++{
        fmt.Println(arr3[i])
    }

上面遍历数组的方式大家可能再熟悉不过了。

这里可以用 range 方法获取数组每一个索引,[0,1,2,3]

for i := range arr3{
        fmt.Println(arr3[i])
    }

我们可以 range 方法获得数组的元素值,返回两个参数,第一个是数组的下标第二个是值。

for _, e := range arr3 {
        fmt.Println(e)
    }

数组是值类型

定义一个函数来打印数组,这里参数数组长度是 5,以为是数组是值类型
我们开始学习文件的相关操作的一些方法有的方法返回值为 []byte err,这里不是数组而是我们随后要接触到数组切片

func printArray(arr [5]int){
    for _, e := range arr {
        fmt.Println(e)
    }
}

所以要用打印不同长度的数组就会报错

printArray(arr3)
printArray(arr2) //cannot use arr2 (type [3]int) as type [5]int in argument to printArray

这是因为数组是值类型,是修改函数内部的数组不会影响外部的数组
那么可以之前学习的传递地址,而不是传递值来解决

func printArray(arr *[5]int){
    arr[0] = 100
    for _, e := range arr {
        fmt.Println(e)
    }
}

在 go 语言中一般不直接使用数组


images.png

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

本文来自:简书

感谢作者:zidea

查看原文:golang 基础(thirteen)指针

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

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