go slice
최근 go에 🤔 관심이 많아져서 grammer를 배우면서 재미있고 신기했던 점들을 기록하기로 했다
참고 (tucker님의 강의 강추 👏)
친절함 + cs 기초지식 + 웹 etc 등등
책으로도 있음
Slice
평소 python을 좋아하는 나에게 익숙한 이름이지만 slicing을 제외하고는 다른 점이 많아 재미있었다.
- slice의 구조
- ptr : elem(배열)을 가르키는 포인터
len : 슬라이스의 len
cap : 슬라이스의 capacity(용량 ,생산능력) - > '최대로 담을수 있는 용량' 이라 생각하면 편할 것 같다.
- 위 슬라이스 구조 때문에 append함수를 이용해 배열에 값을 추가할때 기존의 슬라이스가 바뀔수도 아닐수도 있다
example 01
a := make([]int, 5)
// a == []int{0,0,0,0,0}
a = append(a, 1, 2, 3)
// a == []int{0, 1, 2, 3, 0}
example 02
b := make([]int, 1)
// b == []int{0}
b = append(b, 1, 2, 3)
// b == []int{0, 1, 2, 3}
slice a의 cap 은 5이기 떄문에 1, 2,3 의 값 할당이 가능하지만
slice b의 cap 은 1이기 때문에 할당이 불가능하다. 그래서 새로운 배열을 만들어 주소를 가르키게 된다.
Author And Source
이 문제에 관하여(go slice), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jaeyoung0509/go-slice저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)