배열

배열은 연속된 메모리에 저장된 자료구조로 다른 자료구조 중 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

spring boot Graphql 요청 Environment 접근

spring boot Graphql 요청 Environment 접근

이번에는 Spring Boot GraphQL 환경변수(쿼리명, 파라미터명, 값, 받고자하는 데이터명 등)들을 Controller에서 접근하는 방법을 포스팅하려고 한다. 보통 Rest한 서버의 Controller에서는 @PathVariable , @RequestBody 등과 같은 어노테이션을 이용해서 파라미터들에 접근할 수 있는데 요청자체가 body안에 json형태로 들어오는 graphQL은 위와...

Read More
Clean Code

Clean Code

  • Books
  • 2021년 1월 22일

1장. 깨끗한 코드 코드 품질을 측정하는 유일한 척도 = 분당 내지르는 ‘WTF!’ 횟수 코드는 요구사항을 상세히 표현하는 수단 ( 기계가 실행할 정도로 상세하게 요구사항을 명시하는 작업 = 프로그래밍 ) 작성자가 아닌 사람도 읽고 고치기 쉽고 단순하고 직접적이다 중복을 피하고 한 기능만 수행하게 작제 추상화하기 프로그래밍은 코드를 읽는 시간 대 짜는 시간 비율이 9:1 잘...

Read More
Permutation(순열)

Permutation(순열)

1. next_permutation c++에는 algorithm헤더에 매개변수의 배열/iterator의 다음 순열을 적용시켜 바뀌었다면 true/false를 반환해주는 메서드가 존재해서 이를 do~while문으로 쉽게 순열문제를 해결할 수 있다. 하지만, 자바는 존재하지 않기 때문에 다음과 같이 구현할 수 있다. public boolean next_permutation(int[] arr){ //뒤에서부터 탐색해서 내림차순이 깨...

Read More