go slice

2825 단어 gogo

최근 go에 🤔 관심이 많아져서 grammer를 배우면서 재미있고 신기했던 점들을 기록하기로 했다

참고 (tucker님의 강의 강추 👏)

친절함 + cs 기초지식 + 웹 etc 등등
책으로도 있음

GO offical document
tucker의 go 강의

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이기 때문에 할당이 불가능하다. 그래서 새로운 배열을 만들어 주소를 가르키게 된다.

좋은 웹페이지 즐겨찾기