티스토리 뷰

반응형

https://sdardew-valley.tistory.com/entry/Go-%EB%B0%B0%EC%97%B4-%EC%8A%AC%EB%9D%BC%EC%9D%B4%EC%8A%A4

 

[Go] 배열 & 슬라이스

Go는 데이터의 시퀀스를 다루기 위해서 배열과 슬라이스 타입을 사용할 수 있다. 배열: 길이가 고정된 시퀀스 슬라이스: 길이가 가변적인 시퀀스 배열과 슬라이스 비교 배열 슬라이스 길이가 고

sdardew-valley.tistory.com

Go의 배열과 슬라이스는 위의 내용을 참고하시면 됩니다!

 

정상 코드 1
출력 결과 1

  위의 코드는 정상적으로 실행되는 코드이다. main 함수의 numbers와 multiply의 파라미터 numbers 모두 슬라이스 타입이다. numbers의 모든 값이 factor의 배수만큼 거진 것을 확인할 수 있다.

 

에러 코드 1
에러코드 1 실행 결과

  main 함수의 numbers는 배열이고, multiply의 numbers는 슬라이스이다. 에러 코드 1을 실행했을 때는 type이 일치하지 않아서 문제가 발생한다.

 

에러코드 2
에러코드 2의 실행결과
에러 코드 3
에러코드 3의 실행결과

  에러 코드 2와 에러 코드 3 모두 타입이 달라 사용이 불가능하다는 에러 메시지를 출력한다.

 

정상 코드 2
정상 코드 2

  에러 코드 1에서 multiply 함수의 파라미터 numbers에 크기를 지정해 주었다. main 함수의 numbers multiply 함수의 파라미터 numbers 모두 배열이다.

  코드는 정상 동작이 된다. go는 call-by-value로 실행이 되기 때문에 multiply 함수를 실행해도 main 함수의 numbers 배열의 결과가 변함이 없는 것을 확인할 수 있다.

 

   그렇다면 배열 numbers를 정상코드 1의 multiply 함수에 어떻게 사용할까?

 

정상 코드 3
실행 결과 3

  정상 코드 3의 main 함수의 numbers는 배열이다. 그리고 multiply 함수의 파라미터 numbers는 슬라이스이다. main에서 multiply 함수를 호출할 때 numbers를 아예 슬라이스(슬라이스는 참조 타입이다)로 하여 전달을 해주었다. 실행 결과 3은 실행 결과 1과 일치하는 것을 확인할 수 있다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함