본문 바로가기

Backend/Golang

Go 언어 - [1장] (Go 언어 소개)

※ 디스커버리 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