[Go/gRPC/Protocol Buffer] 크기가 없는 배열 초기화와 slice?

프로그래밍/Go lang2020. 11. 5. 22:37
myArr1 := []int{}
myArr2 := make([]int,0)
var myArr3 []int

위의 코드에서 배열처럼 보이는 것은.. Go에선 배열이 아니라 Slice라고 불린다고 합니다.

 

음.. 제가 보기에는 Java에서 ArrayList, C++에서 vector 개념을 배열로 표현한 것 같아요.

 

var myArr3 []int로 하면 myArr3은 아이템이 하나도 없는 상태로 만들어집니다.

 

아이템을 추가하려면

 

myArr3 = append(myArr3, 12345)

 

와 같이 사용한다고 하네요.

 

append의 리턴값이 사용되는 것이 좀 의아한데 append의 1번째 인자인 slice가 가리키는 공간이 부족한 경우.. 더 넓은 공간을 가리키는 값이 리턴되기 때문에 그런 것 같습니다.

 

간단하게 말하면 그냥 문법이 저렇기 때문에 저렇게 사용하면 될 것 같습니다.

 

참고

stackoverflow.com/questions/45317074/best-practices-constructing-an-empty-array

 

Best practices constructing an empty array

I'm wondering about best practices when initializing empty arrays. i.e. Is there any difference here between arr1, arr2, and arr3? myArr1 := []int{} myArr2 := make([]int,0) var myArr3 []int I kno...

stackoverflow.com

tour.golang.org/moretypes/15

 

A Tour of Go

 

tour.golang.org

 

작성자

Posted by 드리머즈

관련 글

댓글 영역