고양이 형한테 골랑[9] - 슬라이스.

2509 단어 Go
1. Golang에서 수조를 조작하거나 서열화된 데이터는 슬라이스를 사용해야 한다. 프로그램에서'[]'를 쓴다. 슬라이스는 수조의 값을 가리키며 길이 정보를 포함한다.
4 :[]T 원소 유형은 4T의 슬라이스.
먼저 Golang의 Slice에 대해 살펴보십시오.
package main

import "fmt"

func main() {
	list1 := []int{2,4,6,8}
	fmt.Println(list1)
	fmt.Printf("type %T
", list1) for i:=0;i

성명할 때 슬라이스는 유형 앞에 놓고 뒤에 구체적인 목록 내용을 따라야 한다.물론, 직접list1:=[]int{}도 괜찮습니다. 단지 이것은 빈 그룹일 뿐입니다. 논리적으로 '비' 로 사용할 수 있습니다.
2. 파이썬과 유사한 골랑의 슬라이스는 다시 슬라이스할 수 있다.문법:s[low:high]는 low에서 high-1까지의 슬라이스 요소를 나타내며 양쪽을 포함한다.Golang은 C와 유사하며, 함유하고 있지 않다는 것을 기억하면 된다.
따라서 우리는 s[low:low]가 빈 슬라이드 []로 되돌아갈 것이고 s[low:low+1]는 하나의 요소, 즉 s[low]만 포함할 것이라고 안전하게 추정할 수 있다.다시 한 번 슬라이스한 예를 봅시다.
package main

import "fmt"

func main() {
	list1 := []int{2,4,6,8,10}
	
	fmt.Println(list1[1:1])
	fmt.Println(list1[0:3])
	fmt.Println(list1[:2])
	fmt.Println(list1[1:])
	fmt.Println(list1[:0])
}
#   :
[]
[2 4 6]
[2 4]
[4 6 8 10]
[]

3. 슬라이스도 make로 설명할 수 있다. 물론 여기에 Golang 특색이 있는 슬라이스가 나온다.
함수make에서 슬라이스를 만듭니다. 0 길이의 그룹을 분배하고 슬라이스가 이 그룹을 가리킵니다:list2: = make ([] int, 5)//list2 길이는 5 Golang입니다. 슬라이스는 길이와 용량이 있습니다. 슬라이스의 용량은 하위 그룹이 성장할 수 있는 최대 길이입니다.이제 우리는 이전에 사용했던 슬라이스의 길이와 용량이 모두 같다는 것을 알 수 있겠지?기본적으로 용량과 길이가 같다는 것을 알 수 있다.
용량을 지정하기 위해 세 번째 인자를make에 전달할 수 있습니다. 예를 들어list3:=make([]int, 0, 5)/list3 길이는 0이고 용량은 5입니다.
슬라이드 길이를 보면len(), 슬라이드 용량을 보면cap().
slice는 용량 상한선까지 확장할 수 있습니다.아래의 예를 보면 알 수 있다.
package main

import "fmt"

func main() {
	list2 := make([]int, 4, 5)
	fmt.Println(len(list2), cap(list2))
	list2[3]=10
	//list2[4]=20     ...
	fmt.Println(list2)
	list2[0]=1
	list2[1]=5
	fmt.Println(list2)
	fmt.Println(list2[:len(list2)])
	fmt.Println(list2[:cap(list2)])
	list2 = list2[:cap(list2)] //    ,  slice  
	list2[4]=20 //       
	fmt.Println("Now list2 is: ", list2)
}
#   :
4 5
[0 0 0 10]
[1 5 0 10]
[1 5 0 10]
[1 5 0 10 0]
Now list2 is:  [1 5 0 10 20]

4. 빈 슬라이스
자연스레 어떤 원소도 없는 절단은 비어 있고 논리적으로는'false'이며 Golang의 nil과도 같다. 다시 한 번 예를 들면:
package main

import "fmt"

func main() {
	var zerolist []int
	fmt.Println(zerolist, len(zerolist), cap(zerolist))
	if zerolist == nil {
		fmt.Println("empty slice or zero elements list equals nil!")
	}
}
#   :
[] 0 0
empty slice or zero elements list equals nil!



좋은 웹페이지 즐겨찾기