Time does not change us. It just unfolds us.

Programming

[GO]Golang

소젬 2021. 10. 22. 14:43

Golang 이란? 

 

가비지 컬렉션 기능이 있고, 병행성(concurrent)을 잘 지원하는 컴파일 언어다. 

병행성

Go를 이용해 프로그램들이 서로 소통하면서 상태를 공유하는 동시성(concurrency) 프로그램을 쉽게 만들 수 있다. 
동시성이란 멀티스레딩, 병렬 컴퓨팅 뿐 아니라, 비동기성 입출력 또한 포함한다.
예를 들어, 이벤트 기반 서버와 같이, 데이터베이스나 네트워크 작업과 같이 시간이 많이 걸리는 연산을 하는 동안 프로그램이 다른 일을 하는 것을 말한다.

구문이 C와 비슷하지만 메모리 보안, 쓰레기 수집, 구조 타이핑, CSP 스타일 병행성을 제공한다.

간결한 문법과 빠른 컴파일의 시스템 프로그래밍에 적합되게 설계된 언어다.

 

Go의 문법은 대체로 C와 비슷하다: 코드 블록들은 중괄호로 둘러싸고 for, switch, if를 포함한 일반적인 제어구조를 가지고 있다.
C와 다르게, 한 라인 끝의 세미콜론은 필수가 아닌 옵션이다. 변수 선언은 다르게 작성되고 대개 옵션이다.
 형 변환은 명시적으로 해야 한다. 병행 컴퓨팅을 다루기 위해 go와 select 키워드가 사용된다.
새로운 타입은 map, 유니코드 문자열, 배열 slice, 그리고 내부 쓰레드 통신을 위한 채널(channel)이 있다.

Go는 정적 타입 컴파일 언어의 효율성과 동적 언어처럼 쉬운 프로그래밍을 할 수 있도록 하는 것을 목표로 한다. 

  • 안전성 : 타입 안전성과 메모리 안전성
  • 병행성과 통신을 위한 훌륭한 지원
  • 효과적인 가비지 컬렉션
  • 빠른 컴파일

37개의 키워드를 가진 C에 비해 25개로 간결한 키워드를 갖는다.

Go로 만든 Hello, World 프로그램 예시

package main

import "fmt"

func main() {
        fmt.Println("Hello, World")
}

 


 

리눅스에 Go 설치하기

리눅스에 Go를 설치하기 위해서는 Go 공식 웹사이트인 http://golang.org/dl 을 방문하여 Linux용 압축파일을 다운받아 설치한다. 

  1. http://golang.org/dl 다운로드 사이트에서 Linux용 압축파일(go*.tar.gz) 파일의 링크를 복사한다 (브라우져에서 Rightclick후 Copy link address 선택).
  2. curl 이나 wget으로 압축파일을 다운 받는다. 예를 들어, 아래는 curl을 이용하여 go 1.5.3을 다운받는 명령이다.
    # curl -o ./go1.5.3.linux-amd64.tar.gz https://storage.googleapis.com/golang/go1.5.3.linux-amd64.tar.gz
  3. 다운로드된 파일을 /usr/local/go 에 (root 혹은 sudo 사용하여) 압축을 풀어 놓는다.
    # tar -C /usr/local -xzf go1.5.3.linux-amd64.tar.gz
  4. Go 실행경로인 /usr/local/go/bin 폴더를 PATH에 추가한다. 예를 들어, Centos의 경우 시스템전체 프로파일인 /etc/profile에 추가하거나 개인만 적용한 경우 개인 프로파일 $HOME/.bash_profile 에 추가한다.
    PATH=$PATH:/usr/local/go/bin

 

참고1.내가 Go 언어를 선택한 이유

참고2.예제로 배우는 Go 프로그래밍

30분 GO 프로그램 강의

 

'Programming' 카테고리의 다른 글

SQL 기초중에기초중에기초 문법  (0) 2022.02.11
[Java]리소스 확인  (0) 2021.10.28
[JAVA]자바 스트림(Stream)  (0) 2021.10.25