Go(3[数组])

发布时间:2019-08-25 09:33:22编辑:auto阅读(1601)

    数组:var 变量名[len]type

    使用场景:

    • 固定需求的时候,使用数组,不可超出指定长度

    • 长度也是数组类型的一部分

    • 底层内存空间是连续的

    • 用来存储常量

    • 数组是一种特殊的字典.....

    • 数组写入,赋值的方式, 数组[索引]=值

    • 数组是值类型,如果copy成另外一个数组,那修改这个数组,原来的数组并不会改变

    数组初始化:

        定义:    var 变量名 [len]type

    • 第一种: 

      • var a[5] int = [5]int{1,2,3,4,5}


    • 第二种:

      • ceshi :=[5]int{1,3,4,5}
    • 第三种

      • var b = [5]int{1,3}
    • 第四种(当不可知长度的时候使用 ...),需要注意的是在切片中也有这种用法,不过含义不一样

      • var c = [...]int{1,3,4,5,10}

     

    示例:

    var a[5]int
    
    var a[5]string
    
    var a[5]float32
    
    var a[5]bool

    访问数组中的元素:

      使用下标访问: a[0]访问第一个元素。长度为5的数组访问如下: a[0], a[1], a[2], a[3], a[4]

    数组中的长度:

        var a[10]int

        lengh :=len(a)

    示例代码拆分部分:

    1. 数组循环:

      1. 格式化%p,用来打印内存地址

      2. & 符号,取变量地址

      3. 尽量用变量来循环

      4. var a [10]int
        
        for i :=0;i<len(a);i++{
           fmt.Printf("%p\n",&a[i])
        }
      5. length:=len(a) 数组长度


    2. 数组初始化:

      1. 定义数组的时候,默认值都是0

      2. 产生另外一个数组,修改这个数组,并不会对原数组进行修改

      3. func test2()  {
           var a[5]int  = [5]int {1,2,3,4,5}
           var b[5] int
           b = a
           fmt.Printf("%v\n",b)
           b[0] = 200
           fmt.Printf("%v\n",b)
           fmt.Printf("%v\n",a)
        
        }
    3. 数组定义:

      1. 声明数组的时候,需要定义长度和类型!!!

        1. 写法:变量[长度]类型 = [长度]类型[值]

      2. 数组赋值:指定下标来指定元素赋值

      3. %#以go的方式打印

      4. var d [5]string = [5]string{1:"abc",4:"zcq"}
        //%#  以go的方式打印!!!
        fmt.Printf("%#%v\n",d)
        
        fmt.Printf("%v\n",a,b,c)
    4. 二维数组

      1. var a[8][2]int

      2. func test4()  {
           //二维数组
           var a[4][2]int
           for i:=0;i<4;i++{
              for j:=0;i<2;j++{
                 a[i][i] = (i+1) *(j+1)
              }
           }
           for i:=0;i<4;i++{
              for j:=0;i<2;j++{
                 fmt.Printf("%d",a[i][j])
              }
              fmt.Println()
           }
        }
    5. 数组赋值:随机数字放入数组

      1. 切记:go是强类型语言,所以类型如果不一样,是编译不过去的

      2. 使用随机数模块,使用time模块

        1. r := rand.New(rand.NewSource(time.Now().Unix())
      3. func test5()  {
           //随机数字放入数组
           r := rand.New(rand.NewSource(time.Now().Unix()))
           var five [100]int
           //数组 通过索引来赋值
           for i:=0;i<len(five);i++{
              //赋值操作
              five[i]=r.Int()
              //取值操作
              fmt.Printf("%d\n",five[i])
           }
           fmt.Printf("%d\n",five)
        }
    6. 数组赋值:随机字符串放入数组

      1. go里面是utf-8编码

      2. Sprintf 格式化并返回格式化后的字符串,可直接赋值!!!

      3. func test6()  {
           
           var a [100]string
        
           var b string = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
        
           for i:=0;i<len(a);i++{
              var str string
              for j:=0;j<len(b);j++{
                 index :=rand.Intn(len(b))
                 //Sprintf 格式化并返回格式化后的字符串
                 str = fmt.Sprintf("%s%c",str,b[index])
              }
              a[i] = str
              fmt.Printf("a[%d]=%s\n",i,a[i])
        
           }
        }



关键字

上一篇: LVM3

下一篇: Webx3的ToolFactory