※ 디스커버리 Go 언어 라는 책 내용을 전반적으로 다루지만 책 리뷰보다는 좀 더 간단하게 정리해보겠습니다.
1. 시작하기
1.1 Go 언어 소개
- 범용 프로그래밍 언어
- 빠른 컴파일, 가비지 컬렉션 지원
- 정적 자료형 언어이지만 동적 자료형 언어처럼 작성 가능
- 동시성을 지원
- 공식 홈페이지
- Go 가 생산성이 높은 이유
- 부분적이지만 자료형 추론을 통해 자료형 이름을 반복하지 않아도 됨
- 소스 코드 형식을 자동으로 맞춰주는 도구 포함 편리한 도구들 기본 제공
- 테스트코드 작성이 쉽고 코드 문서화까지 가능
- 함수 리터럴 및 클로저 자유롭게 사용
- 명시적으로 인터페이스를 지정하지 않아도 인터페이스 구현 가능
- 채널을 이용해 동시성 구현이 편하고 언어 고유의 자원으로 교착, 경쟁상태 파악 쉬움
- 빠른 컴파일 속도 -> 컴파일 및 테스트 반복 수행 쉬움
- 가비지 컬렉션 지원으로 메모리 관리 부담 감소
- 자료형 리터럴 사용 쉬움
1.2 첫 프로그램
1.2.1 Go 놀이터
- 별도의 컴파일러 설치 없이 브라우저에서도 사용 가능 -> 링크
1.2.2 기본 예제 코드
// Main
package main
import "fmt"
func main() {
fmt.Println("Hello, playground")
}
- main 패키지에 있는 main 함수가 프로그램의 시작점
- 세미콜론으로 구분된 코드를 해석하지만, 쓰지 않아도 줄에 자동으로 세미콜론을 적용하여 자동으로 붙임
- 주석 : // , /* */
- 들여쓰기 : 탭을 이용
1.3 자료형 및 변수
- Go 언어는 정적 자료형을 지원하지만 자료형 추론 기능 또한 지원
- 해당 변수에 다른 자료형의 값을 담을 순 없지만, 자료형의 이름을 써주지 않아도 됨
1.3.1 변수 선언
var x int // 정수 선언
var arr [5]int // 배열 선언
// 함수 선언
func(int, int) // 두 정수를 인자로 받음
func(int) int // 하나의 정수를 인자로 받아 하나의 정수 반환
func(int, func(int, int)) func(int) int // 정수와 두 정수를 받는 함수를 받아 정수 하나를 반환하는 함수를 반환
var p *int // 포인터 선언, 별표는 변수명 뒤에 붙여도 가능
- 공식 스펙
- int, uint 는 64비트인 경우 int64, uint64 를 사용
1.3.2 자료형 추론
- 자료형이 무엇인지 알 수 있는 경우 자료형 사용하지 않아도 됨
var i = 10
var p = &i // i 의 주소값을 p 에 저장
// 위의 코드 더 간소화
i := 10
p := &i
- var 를 생략하는 경우 = 대신 := 사용
1.4 함수와 간단한 제어 구조
// if 문
if n <= 0 {
return 1
}
// for 문 - 1
for n > 0 {
result *= n
n--
}
// for 문 - 2
for i := 2 ; i <= n ; i++ {
result *= i
}
- if / for 문의 조건에 괄호 사용 안함
1.5 Summary
- Go 언어의 특징 - 높은 생산성, 쉬운 동시성 코드 작성 가능
- Go 언어의 기본 형식
- 구문 분석기를 통해 문장 끝에 자동으로 붙는 세미콜론
- Package main - import - func main() 순서
- 변수 선언 : 변수이름 -> 자료형 순서
- 조건문, 반복문
- 괄호가 필요 없음
- while 문도 for 로 사용
출처 : https://book.naver.com/bookdb/book_detail.nhn?bid=10337667
'Backend > Golang' 카테고리의 다른 글
Go 언어 - [6장] (웹 어플리케이션 작성) (0) | 2020.08.29 |
---|---|
Go 언어 - [5장] (구조체) (0) | 2020.08.22 |
Go 언어 - [4장] (함수) (0) | 2020.08.16 |
Go 언어 - [3장] (문자열 및 자료구조) (0) | 2020.08.04 |
Go 언어 - [2장] (Go 환경 설정) (0) | 2020.08.02 |