golang slice 분할 과 append copy 또는 참조
1.
slice1:= slice[0:2]
인용, 복사 되 지 않 기 때문에 slice 1 또는 slice 에 대한 수정 은 상대방 에 게 영향 을 줄 수 있 습 니 다.
data := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}
data1 := data[0:2]
data1[0] = 99
fmt.Println(data1)
fmt.Println(data)
[99 2]
[99 2 3 4 5 6 7 8 9 0]
2.append
append 가 특이 합 니 다.
설명:
원본 slice = src
slice = app 추가
결과 slice = tar
1) len (src) + len (app) < = cap (src) src 와 tar 는 같은 데이터 인용, 즉 src 나 tar 를 수정 하면 상대방 에 게 영향 을 줄 수 있 습 니 다.
2) 그렇지 않 으 면 tar 는 copy 방식 이다. src + app, 즉 src 또는 tar 를 수정 하여 상대방 에 게 영향 을 주지 않 습 니 다.
어떤 경우 에 도 app 에 영향 을 주지 않 습 니 다. app 은 copy 방식 으로 tar 에 들 어가 기 때 문 입 니 다.
func test2() {
data := make([]int, 10, 20)
data[0] = 1
data[1] = 2
dataappend := make([]int, 10, 20)//len <=10 result[0] = 99 Slice
dataappend[0] = 1
dataappend[1] = 2
result := append(data, dataappend...)
result[0] = 99
result[11] = 98
fmt.Println("length:", len(data), ":", data)
fmt.Println("length:", len(result), ":", result)
fmt.Println("length:", len(dataappend), ":", dataappend)
}
3.
:
CounterAdapter
list := make([]CounterAdapter, 0)
ca := CounterAdapter{}
for i := 1; i <= 3; i++ {
ca.Data.Cycle = int64(i)
ca.Data.HostName = fmt.Sprintf("%d", i)
list = append(list, ca)
}
fmt.Println(list)
list 3 , ,append copy
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.