배열

배열은 연속된 메모리에 저장된 자료구조로 다른 자료구조 중 Random Access가 가장빠르고 고정된 길이의 자료구조이다. 배열과 비슷한 자료구조로 go에는 slice가 존재하는데 slice는 동적인 길이의 배열과 같다.

1. 선언 방식

func main(){
  var a [5]int
}

배열은 고정된 size의 자료구조이기 때문에 변수를 선언하는 방식에서 타입을 **[]**를 이용해서 size를 선언해주면 된다. 배열안의 값들의 기본값은 제로값(zero value)로 할당된다.

a := [5]int{1,2,3,4,5}
b := [5]int{1,2,3}

for _,v := range a{
  fmt.Print(v," ") //1,2,3,4,5
}

for _,v := range b{
  fmt.Print(v," ") //1,2,3,0,0
}

배열을 선언하면서 바로 초기화를 하고 싶은 경우에는 := 를 이용해서 위와 같이 선언과 초기화를 동시에 할 수 있으며 초기화를 하지 않은 메모리에는 zero value가 들어간다.


2. 배열의 사용법

a := [5]int{1,2,3,4,5}

fmt.Print(a[1]) //2
a[1] = 0;
fmt.Print(a[1]) //0

다른 언어의 배열 사용법과 같이 변수뒤에 [] 를 이용하여 특정 index메모리에 접근을 할 수 있으며 조회,수정,삽입이 가능하다.


3. 배열의 메모리 크기

1차원 배열,2차원 배열, 그 이상의 배열이더라도 총 선언된 길이 * 자료형 메모리 크기의 메모리 size를 갖는다.

예를 들어 a := [5]int 라면 int가 32bit(4byte)이므로 4byte _ 5의 메모리 size만큼을 갖으며, b := [2][5]int 라면 4byte _ 2 * 5 만큼의 size를 갖는다.



Reference

『Tucker의 Go 언어 프로그래밍』 스터디 요약 노트

Tags :

Related Posts

연산자

연산자

  • Java
  • 2021년 1월 23일

백기선님의 유튜브 로 진행하시는 스터디를 진행하며 올리는 정리 블로그입니다. 산술 연산자 두개의 피연산자를 갖는 이항 연산자로써, 기본적인 사칙연산을 다루는 연산자 ◾ 더하기 (+) 왼쪽의 피연산자에 오른쪽 피연산자를 더하는 연산자로 숫자+숫자, 문자열+문자열이 가능하고 문자열+숫자를 할 시 숫자를 자동으로 문자열로 변환하여 덧셈이 가능하다. 문자+숫자를 할 경우에는 아스키 코드를 이용하여 문자로 결과가 출력 된다. 문자에 맞는 아스키 코드값과 숫자를 더한 결과값에 해당하는 아스키코드를 return하기 때문이다....

Read More
Heap

Heap

Tree중 하나로 최대,최솟값을 찾아내는 연산을 빠르게 하기 위한 완전 이진 트리이다. (Complete Binary Tree ) 우선 순위를 무엇에 두냐에 따라 순서가 달라지기 때문에 자료가 들어온 시간을 우선순위로 놓는다고 하면 일반적인 큐도 우선순위 큐가 될 수 있다. 1. 최대 힙(Max Heap) 부모 노드의 key값이 자식 노드의 key값보다 크거나 같은 완전 이진 트리 c++을 이용한 코드 예...

Read More
Set

Set

  • Java
  • 2021년 6월 1일

Set은 자바의 Collection중에 객체를 중복하지 않고 하나만 저장하는 자료구조로 List와 다르게 저장순서(index)를 따로 저장하지 않기 때문에 이를 통해 접근할 수 없다. Set interface 제공 메서드 메서드 리턴 값 설명 add(E e) boolean 객체 추가성공하면 true addAll(Collection c) boolean 컬렉션을 추가하면 데이터들을 Set에 맞게 저장 remove(Object o) boolean 객체 삭제 contains(Object o) boolean 객체가 포함되었는지 여부 eqauls(Object o) boolean 같은지 비교 clear() void Set 초기화 iterator() Iterator set 요소 접근하기 위한 Iterator객체 반환...

Read More