Chapter 12. Array (배열)
배열이란?
: 같은 타입의 데이터들로 이루어진 타입
- 요소 (elements) : 배열을 이루는 각 값
- 인덱스 (index) : 요소를 가리키는 위치값
배열 변수 선언하기
1. 할당만 하고 초기화를 하지 않는 경우
var v[5] int
//[0,0,0,0,0]
2. 할당하고 초기화까지 한 경우
v := [...]int{1,2,3}
//[1,2,3]
3. 할당하고 초기화는 일부만 하는경우
v := [5] int {1,2,3}
//[1,2,3,0,0]
var s = [5] int{1:10, 3:30}
//[10,0,0,30,0]
배열의 선언은 항상 상수로 해야한다!
Range 순회
해당 배열을 처음부터 끝까지 도는 반복문을 간단하게 나타낼 수 있다!
배열은 연속된 메모리
요소 위치 = 배열 시작 주소 + (인덱스 * 타입크기)
컴퓨터는 인덱스의 타입 크기를 사용하여 메모리 주소를 찾는다.
배열 복사하기
배열의 크기
배열 크기 = 타입 크기 * 항목 개수
len(변수) : 변수에 해당하는 배열의 크기값을 반환한다
Chapter13. Structure ( 구조체 )
구조체란?
: 배열과 달리 다른 타입의 값들을 변수 하나로 묶어주는 기능
구조체 초기화
- 초깃값 생략하기
var house House
- 필드 초기화하기
var house House = House{"서울시 강동구", 28, 9.80, "아파트"}
- 일부 필드 초기화하기
var house House = House{Size : 28, Type: "아파트"}
구조체를 포함하는 구조체
1. 내장 타입처럼 포함하는 방식
2. 포함된 필드 방식
Chapter 14. Pointer (포인터)
포인터
: 메모리 주소를 값으로 갖는 타입
var a int = 500
var p *int
p = &a
nil
: 포인터 변수값을 초기화하지 않았을 떄의 기본값
- 값은 0으로 나온다
- 하지만 정확한 의미는 : 유효하지 않은 메모리 주솟값
- 즉, 어떤 메모리 공간도 가리키고 있지 않다
포인터를 쓰는 이유
1. 변수를 대입하거나 함수인자를 전달할때는 값을 복사한다 -> 많은 메모리 공간을 사용하게 된다
2. 큰 메모리 공간을 복사할대는 성능문제가 발생하게 된다
3. 다른공간으로 복사할경우 변경사항이 적용되지 않는다
인스턴스
: 메모리에 있는 데이터 실체 = 할당된 메모리 공간의 실체
var data Data
인스턴스를 별도로 생성하지 않고 곧바로 인스턴스를 생성해서 초깃값으로 대입한 경우
var p *Data = &Data{}
var p = new (Data)
'3-1기 스터디 > Golang' 카테고리의 다른 글
[6주차] 숫자 맞추기 게임 만들기, Go 언어의 슬라이스 (0) | 2021.12.01 |
---|---|
[5주차] Chapter 15~16. 문자열, 패키지 (0) | 2021.11.30 |
[3주차] Go언어의 if, switch, for (0) | 2021.11.11 |
[2주차] Go 언어의 연산자, 함수, 상수 (0) | 2021.11.03 |
[1주차] Go 언어 입문하기 (개념, 변수, 표준입출력, 설치 방법) (0) | 2021.10.13 |
댓글