고양이 형한테 골랑[9] - 슬라이스.
2509 단어 Go
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!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Golang과 DB를 연결하여 주가 데이터를 그래프로 표시합니다.진화 제작된 프로그램. 지난번에 한 품종에 집중되어 데이터를 보였는데, 이번에는 텍스트 상자에 입력한 품종 코드를 바탕으로 나는 도표를 표시하는 기능을 만들고 싶다. html에서 텍스트 상자와 단추를 준비하세요. w...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.