Golang

Slice

Slice

컴파일타임에 데이터 크기가 고정되어 런타임에 변경이 되지 않는 일반 배열과 달리 변경이 가능한 동적 배열 타입을 slice라고 한다. 정확하게 얘기하면 go에서 제공하는 배열을 가리키는 포인터 타입이다. 1. 선언 방법 배열선언방식과 비슷하지만 [] 안에 배열크기를 지정하지 않으면 slice로 선언이 된다....

Read More
모듈과 패키지

모듈과 패키지

1. 모듈의 변천과정 Go 1.11 이전 : 모듈 존재 X Go 1.11 : 모듈이 소개되었지만 미완성 Go 1.13 : 모듈 완성 Go 1.16 : 모듈이 이제 기본이 되었다. 1) 모듈 모듈은 패키지의 모음 2) 패키지 패키지는 코드를 묶는 단위로 모든 코드는 반드시 패키지로 묶여야 한다. 우리가 흔히 부르는 프로그램은 다양한 관점에서 의미를 해석할수 있을 텐데 실핼파일 관점에서보면 실행시작 지점을 포함한 패키지. 즉, main함수를 포함한 main패키지이다....

Read More
문자열

문자열

문자의 집합(배열)이라는 의미이다. 기존의 문자는 ASCII코드로 1byte를 갖기 때문에 0255로 총 255개의 문자를 표현할 수 있었는데 이 수로는 현재 존재하는 언어(문자)들을 모두 표시할 수 없기 때문에 더 큰 byte의 문자가 필요해졌다. 대표적으로 UTF-8이 있는데 이는 한 문자당 14byte를 갖고 UTF-16은 2byte를 갖는다....

Read More
포인터

포인터

메모리 주소를 값으로 갖는 데이터 타입 1. 선언 방법 메모리주소를 가리킬 데이터타입형에 *를 붙이면 해당 타입의 메모리주소를 담는 포인트형을 선언 할 수 있다. & 를 이용해서 변수의 메모리주소 시작값을 할당 할 수 있다. 메모리 주소 시작값은 하나의 값으로 일종의 숫자 값이다. 2. 사용 방법 포인터 변수를 선언할때 말고 사용하는 시점에 변수앞에 *를 붙이면 메모리주소에 들어있는 값을 의미하고 이를 이용해 메모리주소에 값을 할당 할 수 있다....

Read More
제어문

제어문

1. if문 제어문 중에 하나로 다른 언어들과 사용목적은 동일하며 ifelse ifelse 를 똑같이 지원한다. 1) 선언 방법 Java나 c처럼 **()**로 조건문을 감싸지 않고 바로 조건문을 작성하면 되고 Java처럼 조건문은 bool타입을 반환해야 한다. C/C++처럼 0이 false, 1이상이 true로 인식되지 않는다....

Read More
구조체

구조체

여러 필드를 묶어서 사용하는 타입으로 C의 structure와 비슷하며, go에서는 별도의 클래스를 키워드를 제공하지 않지만 구조체를 이용해서 클래스를 정의할 수 있다. 1. 선언 struct을 이용해서 구조체를 선언하고 해당 형식의 구조체를 특정 이름이라는 타입으로 부르도록 하겠다라는 의미로 type을 이용해서 선언을 해주면 된다....

Read More
연산자

연산자

1. 산술 연산자 구분 연산자 연산 피연산자 타입 사칙 연산과 나머지 + 덧셈 정수, 실수, 복소수, 문자열 - 뺄셈 정수, 실수, 복소수 * 곱셈 정수, 실수, 복소수 / 나눗셈 정수, 실수, 복소수 % 나머지 정수, 실수, 복소수 비트 연산 & AND 비트연산 정수 | OR비트 연산 정수 ^ XOR비트 연산 정수 &^ 비트 클리어 정수 시프트 연산 « 왼쪽 시프트 정수 « 양의 정수 » 오른쪽 시프트 정수 » 양의 정수 산술 연산은 다른 언어의 연산과 별로 다를 것이 없으며 go는 강타입 언어이기 때문에 반드시 피연산자들끼리의 타입이 같아야만 에러가 발생하지 않는다....

Read More
상수

상수

상수는 Immutable(불변)한 특징을 갖으며 한 번 할당된 값을 변경할 수 없는 변수이다. 상수 키워드는 const로 선언방식은 변수 var와 같고 short assginment statement는 var키워드 전용이기 때문에 상수는 짧은 대입문 사용이 불가능 하다. 또한, 반드시 컴파일 타임에 실행이 가능한 표현식이어야만 한다....

Read More
배열

배열

배열은 연속된 메모리에 저장된 자료구조로 다른 자료구조 중 Random Access가 가장빠르고 고정된 길이의 자료구조이다. 배열과 비슷한 자료구조로 go에는 slice가 존재하는데 slice는 동적인 길이의 배열과 같다. 1. 선언 방식 배열은 고정된 size의 자료구조이기 때문에 변수를 선언하는 방식에서 타입을 **[]**를 이용해서 size를 선언해주면 된다. 배열안의 값들의 기본값은 제로값(zero value)로 할당된다....

Read More
함수

함수

1. 함수 생성 방법 func키워드를 이용해서 함수를 선언할 수 있고 가장 기본적으로 만드는 main도 함수 이다. 2. 매개변수(인자) 1) 전달 방식 Java처럼 primitive자료형은 pass by value, reference자료형은 pass by refernece가 아닌 go는 C처럼 *을 이용해서 value인지 reference인지 정해서 넘겨줄 수 있다....

Read More
표준 입출력

표준 입출력

GoLang의 표준 입출력은 다른 언어와 같이 터미널이 기본이며, 파일등으로 수정이 가능하고 fmt패키지에서 제공을 한다. 입출력은 BitStream형태로 되어있다. 1. 표준 출력 1) 함수 함수 기능 Print() 입력값들을 출력 Println() 마지막에 개행문자를 포함한 입력값들을 출력 Printf() c의 printf와 같이 특정 포맷에 맞게 출력 2) 포맷 서식 포맷형태 설명 %d 정수 %f 실수(소수점 6자리까지 표현) %v 기본형태(자동으로 맞는 값으로 변경) %g 길이에 맞는 실수형태로 변경해서 출력(%v로 사용시 실수의 경우 %g로 바뀜) %3d 3자리 칸에 맞춰 오른쪽 정렬해 출력 %03d 3자리 칸에 맞춰 출력하는데 빈칸을 0으로 채움 %-3d 3자리 칸에 맞춰 왼쪽정렬해 출력...

Read More
변수

변수

1. 변수 선언 1) 기본 방법 var키워드로 변수를 선언하고 변수명 다음 데이터 타입을 명시해주어야 하고, 선언만 하고 초기화를 해주지 않으면 go는 Zero value를 할당한다. Note Zero Value 숫자 = 0 bool = false string = "" 2) 타입 추론 위 처럼 변수 뒤의 타입형태를 제외한 형식의 타입추론도 가능하다....

Read More
Golang 특징

Golang 특징

1. 특징 1) 정적 컴파일 언어 JVM을 이용하는 Java와 같이 Runtime에 환경에 맞는 기계어로 번역을 하는 동적 컴파일 언어가 아닌 c나 c++와 같이 한번 compile을 통해 특정환경에 맞는 실행파일을 만들어내는 정적 컴파일 언어이다. 정적 컴파일 언어는 환경(Os, CPU종류)들이 다양해지면서 NxM개의 수만큼 많은 번역기가 존재했어야 하는 단점이 존재해 동적 컴파일 언어가 많은 인기였지만, 정적 컴파일 언어보다는 비교적 속도가 떨어지고 환경이 과거에 비해 비교적 고착화 되어감에 따라 다시 빠른 성능을 보여주는 정적 컴파일언어 형태로 GO가 만들어졌다....

Read More