golang

11-Go语言数组和切片-指趣学院

2018-09-18  本文已影响297人  极客江南

数组


一维数组

package main
import "fmt"
func main() {
    arr := [...]int{1, 3, 5}
    // 使用数组, 往数组中存放数据
    arr[1] = 666
    // 访问数组, 从数组中获取数据
    fmt.Println(arr[0])
    fmt.Println(arr[1])
    fmt.Println(arr[2])
}
package main
import "fmt"
func main() {
    arr := [...]int{1, 3, 5}
    // 传统for循环遍历
    for i:=0; i<len(arr); i++{
        fmt.Println(i, arr[i])
    }
    // for...range循环遍历
    for i, v := range arr{
        fmt.Println(i, v)
    }
}

二维数组

  package main
  import "fmt"
  func main() {
    // 创建一个两行三列数组
    arr := [2][3]int{
        {1, 2, 3},
        {4, 5, 6}, //注意: 数组换行需要以逗号结尾
    }
    fmt.Println(arr)// [[1 2 3] [4 5 6]]
   }
package main
  import "fmt"
  func main() {
    // 创建一个两行三列数组
    arr := [...][3]int{
        {1, 2, 3},
        {4, 5, 6},
    }
    fmt.Println(arr)// [[1 2 3] [4 5 6]]
   }

切片


  package main
  import "fmt"
  func main() {
    var arr = [5]int{1, 3, 5, 7, 9}
    // 同时指定开始位置和结束位置
    var sce1 = arr[0:2]
    fmt.Println(sce1) // [1 3]

    // 只指定结束位置
    var sce3 = arr[:2]
    fmt.Println(sce3) // [1 3]

    // 只指定开始位置
    var sce2 = arr[0:]
    fmt.Println(sce2) // [1 3 5 7 9]

    // 都不指定
    var sce4 = arr[:]
    fmt.Println(sce4) // [1 3 5 7 9]
  }
 package main
 import "fmt"
 func main() {
    // 第一个参数: 指定切片数据类型
    // 第二个参数: 指定切片的长度
    // 第三个参数: 指定切片的容量
    var sce = make([]int, 3, 5)
    fmt.Println(sce) // [0 0 0]
    fmt.Println(len(sce)) // 3
    fmt.Println(cap(sce)) // 5
    /*
    内部实现原理
    var arr = [5]int{0, 0, 0}
    var sce = arr[0:3]
    */
 }
 package main
 import "fmt"
 func main() {
    var sce = []int{1, 3, 5}
    fmt.Println(sce) // [1 3 5]
    fmt.Println(len(sce)) // 3
    fmt.Println(cap(sce)) // 3
 }


上一篇下一篇

猜你喜欢

热点阅读