码迷,mamicode.com
首页 > 编程语言 > 详细

Go(day3[数组])

时间:2017-12-12 10:30:26      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:go(day3[数组])

数组: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])
      
      ???}
      }



Go(day3[数组])

标签:go(day3[数组])

原文地址:http://blog.51cto.com/12765315/2049576

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!