zoukankan      html  css  js  c++  java
  • Go

    数组
        为什么需要数组?为了更方便的管理一些基本的数据;
        数组可以存放多个同一类型数据,数组也是一种数据类型,在Go中,数组是值类型。
     
        数组的定义:
            var 数组名 [数组大小]数据类型
            var a [5]int
            赋初始值 a[0] = 1 a[1] = 20 ....
     
            1.数组不赋值的话,默认每个元素都是0
            2.数组的地址:即数组首地址(即首个元素的地址)(可以类比排队),而其他元素的地址根据第一个依次加数据类型的字节数;
            
            示例:
                var intArr [3]int    
                fmt.Println(intArr)  // [0 0 0]     
                // 输出结果:数组的地址0xc00008c9c0 首个元素的地址:0xc00008c9c0 第二个元素地址:0xc00008c9c8 第三个元素址:0xc00008c9d0    
                fmt.Printf("数组的地址%p 首个元素的地址:%p 第二个元素地址:%p 第三个元素地址:%p", &intArr, &intArr[0], &intArr[1], &intArr[2])
        
        数组的使用:
            示例:
                // 使用数组    
                var fArr [5]float64     
                for i := 0; i < len(fArr); i++ {         
                        fmt.Printf("请输入第%d的值为:  ", i+1)         
                        fmt.Scanln(&fArr[i])     
                }     
                // 打印     
                for i := 0; i < len(fArr); i++ {         
                        fmt.Println(fArr[i])     
                }
        四种数组初始化方式:
     
            var numArr01 [3]int = [3]int{1,2,3}    
            fmt.Println("numArr01=", numArr01)     
     
            var numArr02 = [3]int{4,5,6}     
            fmt.Println("numArr02=", numArr02)     
            // [...] 固定写法     
            var numArr03 = [...]int{7,8,9}     
            fmt.Println("numArr03=", numArr03)     
     
            var numArr04 = [...]int{1:100, 0:199, 2:200}  // numArr04= [199 100 200]     
            fmt.Println("numArr04=", numArr04)     
            // 类型推导     
            strArr05 := [...]string{1:"tom",0:"jack",3:"marry"}  // strArr05= [ tom jack marry]     
            fmt.Println("strArr05=", strArr05)
        
        数组的遍历:
            两种方式:普通for循环/for...range...
            主要使用for...range...  这是Go语言一种独有的结构,可以用来遍历访问数组的元素;
            基本语法:
                for  index, value := range array01 {
                .....
                }
            说明:
                    第一个返回值 index 是数组的下标;
                    第二个value 是在该下标位置的值;
                    他们都是仅在for循环内部可见的局部变量;
                    遍历数组元素的时候,如果不想使用下标index,可以直接把下标index标为下划线_ 
                    index 和 value 的名称不是固定的,即程序员可以自行指定,一般为index和value;
                    示例:
                            for index,value := range strArr05{        
                                    fmt.Println(index, value)     
                            }
        数组使用细节和注意事项:
            1.数组是多个相同类型数据的组合,一个数组一旦声明/定义了,其长度是固定的,不能动态变化。
            2.var  arr  []int  中括号中不写的话这时 arr 就是一个slice切片
            3.数组中的元素可以是任何数据类型,包括值类型和引用类型,但是不能混用
            4.数组创建后,如果没有赋值,有默认值(零值)
                    数值类型数组,默认值为0
                    字符串数组,   默认值为 ""
                    bool数组,      默认值为 false
            5.使用数组的步骤:1:声明数组并开辟空间(数组的大小是数据类型的一部分);2:给数组各个元素赋值;3:使用数组;
            6.数组的下标是从0开始的
            7.数组下标必须在指定范围内使用,否则报panic,数组越界,比如 var  arr  [5]int  则有效下标为0-4
            8.Go的数组属值类型,在默认情况下是值传递,因此会进行值拷贝。数组间不会相互影响;
            9.如想在其它函数中,去修改原来的数组,可以使用引用传递(指针方式);
                示例:
                    // 数组 引用传递及修改数据
                    func arrUpdate(arr *[3]int) {     
                            fmt.Println("arr的地址===", &arr)     
                            (*arr)[0] = 77 
                    }
                    // 测试引用传递修改数据    
                    numArr := [...]int{22,33,44}      
                    arrUpdate(&numArr)     
                    fmt.Println(numArr)   // [77 33 44]
     
            10.长度是数组类型的一部分,在传递函数参数时,需要考虑数组的长度;
                    
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
            
  • 相关阅读:
    springmvc spring mybatis框架整合
    多线程bug修复
    OutOfMemory
    CSS中强悍的相对单位之em(em-and-elastic-layouts)学习小记
    css中line-height行高的深入学习
    HTML5的新语义化的标签
    关于Three.js基本几何形状
    【Google Chrome】 Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource问题解决
    模拟Bootstrap响应式网格系统
    关于我对写博客那些事儿的实用心得
  • 原文地址:https://www.cnblogs.com/guo-s/p/13963605.html
Copyright © 2011-2022 走看看