Golang에서 `array`와 `slice{array,array,...}`의 차이점은 무엇인가요? 많은 초보자들이 자주 묻는 질문입니다. PHP 편집자 Zimo가 답변해 드립니다. Golang에서 '배열'은 고정 길이 시퀀스입니다. 일단 정의하면 길이를 변경할 수 없습니다. '슬라이스'는 필요에 따라 확장하거나 축소할 수 있는 동적 길이의 시퀀스입니다. 또한 'array'의 길이는 정의 시점에 결정되는 반면, 'slice'의 길이는 런타임에 동적으로 변경될 수 있습니다. 따라서 이를 사용할 때에는 실제 필요에 따라 적절한 데이터 구조를 선택해야 합니다.
이유를 알고 싶습니다. 힌트를 주세요.
2D 슬라이스인 res
中,res
에 배열을 추가하고 싶습니다. 그래서 먼저 변환을 해야 합니다.
배열을 슬라이스로 변환하면 오류가 발생합니다.
하지만 결과는 내가 원하는 것이 아니다.
그런 다음 임시로 for 루프를 수정했습니다
으아악 으아악이제 결과는 맞았는데 왜일까요?
k[:]
和 []int{k[0],k[1],k[2]}
차이점은 무엇인가요?
루프를
로 변경하세요. 으아악원본 루프는 다른 키가 복사되는 [3]int
的变量 k
,该变量在内存中具有特定位置。循环的每次迭代,都会将映射 mm
유형의 변수를 선언합니다. 여태까지는 그런대로 잘됐다.
사용 시 k[:]
将其转换为切片时,它会创建一个切片标头,指向数组 k
。这里出错了 - 循环的下一次迭代,k
的值被覆盖。循环中创建的所有切片都指向内存中同一位置的同一支持数组 k
.
먼저 k
의 값을 루프 내부에 선언된 변수에 복사하여 각 슬라이스에 자체 백업 배열을 제공함으로써 문제를 방지할 수 있습니다.
위 내용은 Golang에서 `array`와 `slice{array,array,...}`의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!