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)
}

数组的切片:

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)
posted @ 2019-04-02 16:46  Wualin  阅读(194)  评论(0编辑  收藏  举报