美文网首页
Go的数组和指针

Go的数组和指针

作者: MaxZing | 来源:发表于2019-05-16 15:24 被阅读0次

一、 定义数组

package main

import (
    "fmt"
)

func main() {
    //空数组
    var arr1 [10]int
    //:=定义Array,必须初始化
    arr2 := [5]int{1, 2, 3, 4, 5}
    //自由长度
    arr3 := [...]int{1, 2, 3}
    //二维数组
    var arrInArr [3][4]int
    fmt.Println(arr1, arr2, arr3, arrInArr)
}

二、 遍历数组

  1. 下标遍历
// 下标遍历
func main() {

    //:=定义Array,必须初始化
    arr2 := [5]int{1, 2, 3, 4, 5}
    for i := 0; i < len(arr2); i++ {
        fmt.Println(arr2[i])
    }
}
  1. range遍历(index)
func main() {
    // range遍历(index)
    arr2 := [5]int{1, 2, 3, 4, 5}
    for index:= range arr2{
        fmt.Println(index)
    }
}
  1. range遍历(index,value)
func main() {
    // range遍历(index,value)
    arr2 := [5]int{1, 2, 3, 4, 5}
    for index, value := range arr2 {
        fmt.Println(index, value)
    }
}
  1. range遍历(value)
func main() {
    // range遍历(value), Go不允许定义不使用的变量,所以用下划线代替
    arr2 := [5]int{1, 2, 3, 4, 5}
    for _, value := range arr2 {
        fmt.Println( value)
    }
}

三、Go语言中Array是值类型

这意味着,Array传递到其他函数时,在其他函数的操作不会影响传递前的值
举个例子

func main() {
    arr3 := [3]int{1, 2, 3}
    
    fmt.Println("测试前", arr3)
    testValue(arr3)
    fmt.Println("测试后", arr3)

}

func testValue(araya [3]int) {
    //函数内部,修改第一个元素值
    araya[0] = 100
    fmt.Println("测试中", araya)
}

测试结果:


所以数据是copy到下一个函数的,想要引用传递,则需要指针

四、指针

Go 中的指针是不参与计算的,单纯的表示变量的位置

  1. 指针用于引用传递
    首先,上面的代码做一个变化:
func main() {
    arr3 := [3]int{1, 2, 3}
    fmt.Println("测试前", arr3)
    testValue(&arr3)
    fmt.Println("测试后", arr3)

}

func testValue(araya *[3]int) {
    //函数内部,修改第一个元素值
    araya[0] = 100
    fmt.Println("测试中", araya)
}

新结果:


  1. 指针的定义方式
    由上面代码可以看出指针的定义方式就是在普通类型前面加一个*

赋值就是在对应类型的值前面加&,取出地址。

    arr3 := [3]int{1, 2, 3}
    var araya *[3]in = &arr3

喜欢请点个赞,

转载请注明出处:https://www.jianshu.com/u/4915ed24d1e3

如有错误,请务必指正!谢谢!

我的博客:https://xzing.github.io/

相关文章

  • golang笔记

    go中数组长度不同无法进行比较,数组长度也是数组的组成部分; 指向数组的指针和指针数组:指向数组的指针是取数组的引...

  • Go核心语言编程 - 复合数据类型(3)

    Go对应的复合数据类型有数组,字典,指针,切片,通道,结构和结构,他们字面类型如下: • 指针 • 数组• 数组初...

  • 第03天(复合类型)_03

    13_数组做函数参数.go 14_数组指针做函数参数.go 15_切片的长度和容量.go 16_切片的创建.go ...

  • Go语言 指针

    指针 概念 Go语言的指针和C语言一样也是用来保存地址的变量 格式 普通指针 指向数组的指针 注意点 GO语言中只...

  • Go的数组和指针

    一、 定义数组 二、 遍历数组 下标遍历 range遍历(index) range遍历(index,value) ...

  • Go语言之数组指针和指针数组

  • Go 简明教程 三步走 中级篇

    GO 数组、指针、结构体 数组 认识指针地址和指针类型 每个变量在运行时都拥有一个地址,这个地址代表变量在内存中的...

  • Go结构-2

    指针 普通指针 通过指针也可以间接操作指向的存储空间 指向数组的指针 可以通过指针间接操作数组 注意点:Go语言中...

  • C语言指针相关

    一、指针数组 和 数组指针的区别:1:指针数组,还是数组,数组每个元素是指针。2:数组指针,是指针,指向的是数组。...

  • Go语言探索 - 9(原创)

    Go语言基础系列博客用到的所有示例代码 在上一篇文章主要学习了Go语言中的数组、指针数组以及二级指针,本篇文章主要...

网友评论

      本文标题:Go的数组和指针

      本文链接:https://www.haomeiwen.com/subject/zuasoqtx.html