Golang的数组

Golang数组

package main
import "fmt"

func main()  {
    // 定义一个长度为10,元素类型为string的值
    li2 := [10]string{}
    //循环数组
    for i ,v := range li2{
        fmt.Printf("索引:%d,元素:%s \n",i,v)
    }

    // 给数组中某个元素赋值
    li2[1] = "miao"

    //调用search
    search(li2)
    fmt.Println(li2)
}

// 定义一个方法,传入的参数是数组,并在数组中修改索引为2的元素
func search(array [10]string)  {
    array[2] = "123"
    fmt.Println(array)
}

数组的切片:golang

package main

import "fmt"

func main()  {

    /*
    //定义一个数组
    var myArray[5]int = [5]int{1,2,3,4,5}

    //基于数组建立一个数组切片
    var mySile[]int = myArray[:3]

    //输出MyArray中全部的元素
    fmt.Print("MyArray:")
    for _,v := range myArray{
        fmt.Print(v," ")
    }

    fmt.Print("\nMySile:")
    for _,v := range mySile{
        fmt.Print(v," ")
    }
    // Go语言支持Myarray[first:last]进行切片生成数组
    fmt.Print("\nMyArray[2:4]:")
    for _,v := range myArray[2:4]{
        fmt.Print(v)
    }
    */
    // 数组切片的其余方法
    myArray := make([]int,5,10) //make第二个参数是数组的长度,第三个参数是数组的总长度
    mysile := []int{1,2,3}
    myArray = append(myArray,mysile[2]) // 使用append向数组myArray添加三个参数,参数也能够是一个切片
    myArray = append(myArray,1,2,3)
    fmt.Println(myArray)
    //mySile := []int{6,7,8}

    // cap() len()
    // cap()函数返回的是数组切片分配的空间大小,len()函数返回的是数组切片中当前所存储的元素个数
    fmt.Printf("map(myArray):%d \n",cap(myArray))
    fmt.Printf("len(myArray):%d",len(myArray))
}

基于数组切片建立数组切片与 copy的使用数组

myArray := make([]int, 10, 20)

    // 切片1
    mySile1 := myArray[2:8]
    fmt.Println(mySile1)

    //基于切片1建立数组切片

    mySile2 := mySile1[2:4]
    fmt.Println(mySile2)

    /*
    虽然mySile1只包含5个元素。只要这个选择的范围不超
    过myArray存储能力(即cap()返回的值),那么这个建立程序就是合法的。mySile2中超出
    mySile1元素的部分都会填上0。
     */

     ///////////////////// 内容复制 /////////////////
     slice1 := []int{1,2,3,4,5}
     slice2 := []int{5,4,3}
     fmt.Println(slice1,slice2,"\n")
     copy(slice2,slice1) // 只会复制slice1的前3个元素到slice2中
     copy(slice1,slice2) // 只会复制slice2的3个元素到slice1的前3个位置
     fmt.Println(slice1,slice2)
相关文章
相关标签/搜索