go语言基础知识笔记(二)之数组和切片

数组和切片知识用的也是比较多,的给我们工作带来很大的便利

 

(一) 数组

定义:在golang中数组的长度是不可变,数组存放要求是同一种数据类型
//golang中数组定义的四种方法
1.先声明,后赋值
  var arr1 [2]int
     arr1[0]=1
     arr1[1]=2

2.声明同时赋值
  var arr2 = [2]int{1,2}
  //或者
  arr2 := [2]int{1,2}
3.不指定长度程序自动计算长度
  var arr = [...]int{1,2}
  //或者
  arr := [...]int{1,2}
4.key和value的形式
  var arr = [...]int{1:1,0:2}
//或者
  arr := [...]int{1:1,0:2}
//golang中数组遍历的两种方法
1.常规方法
for i:=0;i<len(arr);i++ {
  fmt.Printf("arr[%d] = %v",i,arr[i])
}
2.高级方法(推荐使用)
for key(_),value:= range arr{
  fmt.Printf("arr[%d] = %v",i,arr[i])
}
//动态修改数组的值,默认情况下数组是值传递

//形参定义成一个指针数据类型
func T2(a *[]string) {
    *a[0] = 99 //修改原来的值
}

func main() {
    s1 := [...]string{11,22}
    T2(&s1) //传递一个数组的地址作为实际参数
    s1  = append(s1 , "33")
    fmt.Println(s1)
}
//数组指针和指针数组
1.数组指针即是一个指针并且这个指针保存了一个指向数组的地址
   var arr =  [...]int{5:2}
   //数组指针
   var pf *[6]int = &arr
2.指针数组即是一个数组,数组里面保存很多指针
  x,y := 1, 2
  pfArr := [...]*int{&x,&y}
//多维数组(二维)
1.多维数组即数组里面又是一个数组
2.定义方法
  2.1先定义再赋值
    var arr1 [2][2]int
    arr1[0][0] = 5.....
  2.2定义的同时赋值
    var arr2 [2][2]int = [2][2]int{{1,2,3},{3,4,5}}
3.多维数组的遍历
  3.1
    for i:=0;i<len(arr);i++{
       for j:=0;i<len(arr[i]);j++{
      }
    }
  3.2
    for i;value1 :=range arr2{
      for j;value2 :=range value1 {
        
    }
  
}

(二) 切片

  切片是数组的引用,并且是动态的数组,长度可以变化.

//切片的定义的几种方法
1.数组的引用
  var intArr [4]int = [...]{12,34,44,33,11}
  slice := intArr[1:3]
2.make定义
  
var slice []type = make([]type,len,[cap])
3.常规用法
  var slice []type = []type{value1,value2,value3}
  
遍历的方法和数组也是一样的就不继续啰嗦了

 

//切片的内置函数
1.动态添加切片
    append(切片,value1,value2,value3)
2.切片的copy
    copy(切片1,切片2)
//字符的切片
1.字符的切片在某种情况下是不可变的
2.想要修改字符串中的值[]byte(str)[这种是处理英文方式],
[]rune(str)[这种是处理中文方式]  

 

  

posted @ 2019-04-29 15:05  江世文  阅读(164)  评论(0编辑  收藏  举报