Golang에서 나는 여행 세일즈맨 문제에 대해 스크램블 슬라이스 기능을 만들려고합니다. 이 작업을하는 동안 슬라이스 편집을 시작했을 때 스크램블 기능이 전달 될 때마다 다른 것을 알게되었습니다.golang 조각은 값을 전달합니까?
디버깅을 한 후 기능 내에서 슬라이스를 편집하는 것으로 알았습니다. 그러나 Golang은 "가치에 의한 전달"언어로되어 있기 때문에 어떻게 가능합니까?
https://play.golang.org/p/mMivoH0TuV
내가 무슨 뜻인지 보여줄 수있는 놀이터 링크를 제공하고 있습니다. 27 행을 제거하면 다른 출력을 얻게됩니다.이 출력은 인수로 전달 될 때 함수가 자체 슬라이스 복사본을 만들기 때문에 차이가 없어야합니다.
누군가 현상을 설명 할 수 있습니까?
그렇게 할 수있는 솔루션을 함수 내부에서 슬라이스의 로컬 복사본을 만들 수 있습니다. 대신 그 편집? – duck
@ user4901806 전달 된 슬라이스의 요소 (해당 백업 배열의 요소가 가리키는 요소)를 수정하지 않으려면 예를 복사합니다. – icza
요소를 추가하면 원본 슬라이스에 추가되지 않는다고 가정합니다. – Sahas