go言語学習九-スライス(slice)

1595 ワード

sliceの原理が実現する。
package main

import "fmt"

/*
  -slices
slices        ,       array   view
          java      。
*/
func main() {
	s:=[...]int{0,1,2,3,4,5,6,7}
	//    0-5   
	fmt.Println(s[:5])
	//    2-     
	fmt.Println(s[2:])
	//    2-5   
	fmt.Println(s[2:5])
	//         
	fmt.Println(s[:])
	//      slices
	s1:=s[1:6]
	//   1 2 3 4 5
	fmt.Println(s1)
	updateSlices(s1)
	//           100 2 3 4 5
	fmt.Println(s1)
	//slices      。
	s2:=s1[1:]
	//   2 3 4 5
	fmt.Println(s2)
	s2=s2[:3]
	//    2 3 4
	fmt.Println(s2)

	arr:=[...]int{0,1,2,3,4,5,6,7}
	q1:=arr[2:6]
	//   2 3 4 5
	fmt.Println(q1)
	q2:=q1[3:5]
	//   5 6 ps:       ,q1  2 3 4 5 ,q2 6    。
	//           ,    array    ,   q1      q1[5]     ,          。             
	//slices      ,      。
	//q1      4(2 3 4 5)        (2 3 4 5 6 7) 6 7   
	//     len(q1)        cap(q1)
	fmt.Println(q2)
}
func updateSlices(arr []int){
	arr[0]=100
}
sliceの基本操作。
package main

import "fmt"

func main() {
	//slice              slice   
	var s []int
	//    make   slice,        ,        cap  。
	s1:=make([]int,8)
	s2:=make([]int,8,16)
	s3:=[]int{2,3,4,5}
	print(s)
	print(s1)
	print(s2)
	print(s3)

	// slice     。
	//append     -   slice   append  。
	s=append(s,10,11,12)
	fmt.Println(s)
	//copy  ,s     3, s3  copy       2 3 4 ,            。
	copy(s, s3)
	fmt.Println(s)
	//      slice,---go                slice,        append      slice,    remove  。
	s4:= append(s3[1:])
	fmt.Println(s4)
}
func print(s []int){
	fmt.Printf("value=%v, len=%d,cap=%d 
",s,len(s),cap(s)) }