go中的数组

demo1: 数组的初始化和遍历等操作

package main

import (
    "fmt"
)

func main() {
    //数组初始化的几种方式
    var arr1 [3]int         //元素带默认值,等价于arr1:=[5]{}
    arr2 := [3]int{1, 2, 3}     //自定义元素值
    arr3 := [...]int{1, 2, 3, 4, 5}     //不确定元素的个数,用省略号
    var arr4 [4][5]int //二维数组

    fmt.Println(arr1, arr2, arr3)
    fmt.Println(arr4)
    
    //go中的数组只支持取值和修改操作,不支持增加和删除
    fmt.Println(arr2[1])
    arr2[1] = 1
    fmt.Println(arr2)

    //数组遍历的几种方式
    for i := 0; i < len(arr3); i++ {
        fmt.Println(arr3[i])
    }

    //方式2,遍历出数组的下标和对应值
    for i, v := range arr3 {
        fmt.Println(i, v)
    }

    //只遍历数组的值,可以用_替换i
    for _, v := range arr3 {
        fmt.Println(v)
    }
}

demo2: go使用数组传参时是值类型

go语言中函数传递参数的时候,数组作为参数,实际调用的时候是值传递,而python C C++等语言是引用传递

package main

import "fmt"

/*
go语言中函数传递参数的时候,数组作为参数,实际调用的时候是值传递,而python C C++等语言是引用传递

*/

func fun1(s [5]string) {        //[]string这是切片类型
    s[0] = "hello"
    fmt.Println(s)
}

func main() {
    //长度不一样的数组不是一个类型
    s1 := [3]string{"1", "2", "3"}
    s2 := [5]string{"1", "2", "3", "4", "5"}

    fmt.Printf("%T", s1)
    fmt.Println()
    fmt.Printf("%T", s2)
    fmt.Println()

    //值传递,所以s3的值并为发生改变
    s3 := [5]string{"1", "2", "3"}
    fun1(s3)
    fmt.Println(s3)

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值