继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Go(3[数组])

linux快速入门培训
关注TA
已关注
手记 266
粉丝 31
获赞 120

数组: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]intvar a[5]stringvar a[5]float32var 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]intfor 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])   }}



打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP