• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Go语言学习(五)----- 数组

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

前几天一直在忙,今天才有时间继续学习Go语言。

我也不知道会坚持多久,会学到什么地步,不过我会坚持,尽可能地坚持学下去...

 

回到正题,数组是Go语言中的一个重要的类型,由[n]<type> 定义,n 标示array 的长度,而<type> 标示希望存储的内容的类型。

申明一个数组:

var arr1 [10]int

Go语言中的数组一般有固定的大小,大小是类型的一部分。由于不同的大小是不同的类型,因此不能改变大小。

数组同样是值类型的:将一个数组赋值给另一个数组,会复制所有的元素。

尤其是当向函数内传递一个数组的时候,它会获得一个数组的副本,而不是数组的指针。

代码为证:

 1 package main
 2 
 3 import "fmt"
 4 
 5 func modify(array [5]int) {
 6     array[0] = 10
 7     fmt.Println("In modify(), array values:", array) //[10 2 3 4 5]
 8 }
 9 
10 func main() {
11     array := [5]int{1, 2, 3, 4, 5}
12     modify(array)
13     fmt.Println("In main(), array values:", array) //[1 2 3 4 5]
14 }

输出结果为:

In modify(), array values: [10 2 3 4 5]
In main(), array values: [1 2 3 4 5]

正好印证了上面说的:当向函数内传递一个数组的时候,它会获得一个数组的副本,而不是数组的指针。

 

关于数组的申明方式已经二维数组的使用见如下实例:

package main

import "fmt"

func main() {

    //申明一个长度为10的int数组
    var arr1 [10]int
    arr1[0] = 42
    arr1[1] = 13
    fmt.Printf("The element is %d\n", arr1[0]) //42
    fmt.Printf("The element is %d\n", arr1[9]) //默认值0来初始化
    fmt.Println(arr1)

    //申明一个长度为3,值分别为1,2,3的数组
    arr2 := [3]int{1, 2, 3}
    fmt.Println(arr2)

    //如下情况,Go会自动统计元素个数
    arr3 := [...]int{1, 2, 3}
    fmt.Println(arr3)

    //二维数组,如下3中方式都可以
    //a := [2][2]int{ [2]int{1,2}, [2]int{3,4} }
    //a := [2][2]int{ [...]int{1,2}, [...]int{3,4} }
    a := [2][2]int{{1, 2}, {3, 4}}
    fmt.Println(a)
    fmt.Printf("%d\n", a[0][0]) //1
    fmt.Printf("%d\n", a[0][1]) //2
    fmt.Printf("%d\n", a[1][0]) //3
    fmt.Printf("%d\n", a[1][1]) //4
}

 

数组就到这里了,明天继续slices~~


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Go语言最佳实践——面向对象发布时间:2022-07-10
下一篇:
go——搭建Win7下的Go开发环境发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap