javer转go入门笔记-数组与切片

摘要

本文介绍了Go语言中数组的特点、定义方式与使用注意事项,然后介绍了其引申内容《切片》的内容,同时也分析了Go中的数组和切片与C、Java中数组的不同。

1、数组的定义与特点
定义

在Go中,首先明确数组是基本类型,而在java中数组是一个对象。
数组的类型是[n]T,表示该类型拥有n个T类型的值,其定义规则有以下几种:

var a [10]int  //默认赋零值
a := []int{1, 2, 3}  //数组长度有赋值格式决定
a := [10]int{1,2,3} //多余的部分直接赋零值
特点

Go语言的数组和java和c中是完全不同的,go中数组变量代表了整个数组,而不是c中指向数组的指针,或者java中代表一个对象的地址。其具体特点如下:

  • 1、长度n是数组类型的固有属性,在定义是必须指定数组长度。同时[4]int和[5]int不是同一种类型,在=号复制和函数传参时都不能混用,案例如下:
func changeArr(arr [3]int) {
    arr[0] = 100
    return
}

arr1 := [5]int{1, 2, 3, 4, 5}
changeArr(arr4) //编译报错:cannot use arr4 (variable of type [5]int) as [3]int value in argument to changeArr

arr2 := [4]int{1, 2, 3}
arr2 = arr1  //编译报错:cannot use arr4 (variable of type [5]int) as [4]int value in assignment
  • 2、由于数组在Go中是基本数据类型,因此无论是等号赋值还是函数传参都是值传递!!!,案例如下:
arr2 := [3]int{1, 2, 3}
arr3 := arr2
arr3[1] = 0
fmt.Println("arr2:", arr2)
fmt.Println("arr3:", arr3)

************输出结果*************
arr2: [1 2 3] 
arr3: [1 0 3]
2、切片的引入与定义

小节1中数组的两个特性导致改变数组大小或对数组引用传递时非常不方便,因此在Go语言中一般使用切片而不是数组。
切片使用[]T来表示,表示类型T的切

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值