>백엔드 개발 >Golang >golang 배열과 슬라이스의 차이점은 무엇입니까?

golang 배열과 슬라이스의 차이점은 무엇입니까?

青灯夜游
青灯夜游원래의
2019-12-25 18:02:463489검색

golang 배열과 슬라이스의 차이점은 무엇입니까?

golang에서 배열과 슬라이스의 차이점:

● 슬라이스는 포인터 유형이고 배열은 값입니다. 유형

● 배열의 길이는 고정되어 있지만 슬라이스는 고정되어 있지 않습니다(슬라이스는 동적 배열입니다)

● 슬라이스에는 배열보다 하나 이상의 속성이 있습니다: 용량(캡)#🎜 🎜#

● 슬라이스의 맨 아래 레이어는 배열입니다

관련 권장 사항:

golang tutorial

하나는 포인터이므로 유형이고 다른 하나는 값 유형입니다. 차이점은 무엇입니까?

이 예를 보세요

	numbers := []int{1, 2, 3, 4, 5, 6}
	for i, e := range numbers {
		if i == len(numbers)-1 {
			numbers[0] += e
		} else {
			numbers[i+1] += e
		}
	}
	fmt.Println(numbers)

결과는 다음과 같습니다:

[22 3 6 10 15 21]

슬라이스를 배열로 교체:

	numbers := [...]int{1, 2, 3, 4, 5, 6}
	for i, e := range numbers {
		if i == len(numbers)-1 {
			numbers[0] += e
		} else {
			numbers[i+1] += e
		}
	}
	fmt.Println(numbers)

결과는 다음과 같습니다.

[7 3 5 7 9 11]

분명히: 순회 후 배열의 각 요소는 현재 요소와 이전 요소의 합계가 됩니다. 슬라이싱에서도 마찬가지입니다. 단, 각 요소는 이전 요소가 됩니다. . 요소와 현재 요소의 변경된 값의 합계입니다.

분석: for 루프 동안 숫자의 요소는 {1,2,3,4,5,6}입니다. for 루프를 수신하는 변수는 i와 e이고, i는 둘 다 [0,1,2,3,4,5]입니다. 하지만 e는 다르며 배열은 값으로 전달되므로 배열을 순회할 때 e는 {1,2,3,4,5,6} 포인터를 전달하므로 누적될 때마다 변경된 값은 다음과 같습니다. 축적.

위 내용은 golang 배열과 슬라이스의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.