golang数组操作


一、数组

golang的数组、切片,和py的列表相似,但是他们要求其中的元素必须是同一种数据类型。他们都可以通过索引下标访问和修改。

golang数组和切片的区别:

  golang数组,长度固定。切片,长度及容量自动扩容。

  golang数组,是值类型数据。切片,是引用类型数据。

  golang数组,不需要使用make初始化。切片,可以使用make初始化,也可以不使用make初始化,直接使用。

值类型:基本数据类型int, float,bool, string以及数组和struct

  值类型:变量直接存储值,内容通常在栈中分配

  var i = 5     i -----> 5

引用类型:指针,切片,map,chan等都是引用类型

  引用类型:变量存储的是一个内存地址,这个内存地址存储最终的值,内容通常在堆上分配,通过GC回收

  ref r ------> 内存地址 -----> 值

二、数组定义

1.var声明数组

1.var声明数组
var 变量名称 [数组长度]数据类型
var balance1 [10] float32
2.var声明数组,并初始化
var 变量名称 = [数组长度]数据类型{} var balance2
= [10] float32{}
3.var声明数组,并初始化,不确定长度 var balance3 = [...] float32{1.1}

 

 

2.推导式声明数组

1.推导式声明数组,并初始化
balance4 := [10] float32{}
balance5 := [10] float32{1.1}
2.推导式声明数组,并初始化,不确定长度 balance5 := [...] float32{1.1}

 

 

 

 

三、遍历

1.方式1:

arr := [4]string{"a","ab","abc"}
for i:=0; i<len(arr); i++ {
     fmt.Println(i, arr[i])  
}

 

2.方式2:

arr := [4]string{"a","ab","abc"}
for index, value := range arr {
    fmt.Println(index, value)
}

 

3.验证数组式值类型

arr1 := [3]int{1,2,3}
arr2 := arr1
arr2[0] = 100
fmt.Println(arr1)   //[1 2 3]
fmt.Println(arr2)   //[100 2 3]

 

4.验证切片式引用类型

a1 := []int{1,2,3}
a2 := a1
a2[0] = 100
fmt.Println(a1)   //[100 2 3]
fmt.Println(a2)   //[100 2 3]

 

 

四、二维数组

a := [3][4]int{  
 {0, 1, 2, 3} ,   /*  第一行索引为 0 */
 {4, 5, 6, 7} ,   /*  第二行索引为 1 */
 {8, 9, 10, 11},   /* 第三行索引为 2 */
}
// 注意:以上代码中倒数第二行的 } 必须要有逗号,因为最后一行的 } 不能单独一行,也可以写成这样:
a := [3][4]int{  
 {0, 1, 2, 3} ,   /*  第一行索引为 0 */
 {4, 5, 6, 7} ,   /*  第二行索引为 1 */
 {8, 9, 10, 11}}   /* 第三行索引为 2 */


    // 创建二维数组
    sites := [2][2]string{}

    // 向二维数组添加元素
    sites[0][0] = "Google"
    sites[0][1] = "Runoob"
    sites[1][0] = "Taobao"
    sites[1][1] = "Weibo"

    // 显示结果
    fmt.Println(sites)

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM