Go는 구글에서 개발한 프로그래밍 언어로, 간결하고 효율적인 코드 작성을 위해 설계된 언어입니다. Go는 정적 타입 언어로, C와 유닉스 환경에서 사용되는 도구들의 장점을 결합한 언어로 개발되었습니다.
Features of Go
간결하고 가독성이 좋은 문법
C 스타일의 문법을 가지고 있으며, 불필요한 기능을 제거하여 코드를 간결하게 작성 가능
문법이 간단하고 가독성이 좋아 새로운 개발자들의 빠른 숙달
효율적인 동시성 지원
동시성을 위한 기능 내장 $\rightarrow$ 병렬 프로그래밍의 쉬운 구현
Goroutine은 경량 스레드로, 작은 메모리 오버헤드로 수많은 고루틴을 동시에 실행 가능 $\rightarrow$ 대규모 시스템에서 효율적인 동시성 처리 구현 가능
빠른 컴파일과 실행 속도
정적 타입 언어지만 빠른 컴파일 속도
Garbage collection을 통한 편한 메모리 관리 $\rightarrow$ 대규모 시스템에서도 빠른 실행 속도를 제공합니다.
강력한 표준 라이브러리
풍부한 표준 라이브러리를 제공 (네트워킹, 암호화, 웹 개발, 데이터베이스 액세스 등 다양한 작업)
크로스 플랫폼 지원
다양한 운영 체제와 아키텍처에서 사용할 수 있도록 크로스 플랫폼 지원 제공
하나의 코드베이스로 여러 플랫폼에서 실행할 수 있는 이식성 높은 프로그램 개발 가능
Go는 웹 서버, 분산 시스템, 클라우드 서비스, 네트워크 프로그래밍 등 다양한 분야에서 사용된다. 특히, 동시성 처리에 강점을 가지고 있어 대규모 시스템의 성능을 향상시킬 수 있다. 또한, Go는 개발자들의 생산성을 높이기 위해 설계된 언어로, 간결한 문법과 강력한 도구들을 제공하여 개발자들이 효율적으로 코드를 작성할 수 있도록 도와준다.
Install & Setup on MacOS (Apple Silicon)
Install
1 2 3
$ brew install go $ go version go version go1.20.5 darwin/arm64
Setup
1 2 3 4 5 6
$ vi ~/.zshrc export GOROOT=${YOUR_GOROOT} export PATH=$GOROOT/bin:$PATH $ source ~/.zshrc $ go env | grep GOROOT GOROOT=${YOUR_GOROOT}
GOPATH: Go에서 사용되는 환경 변수
소스 코드와 컴파일된 바이너리 파일을 관리하기 위해 일정한 디렉토리 구조 필요 $\rightarrow$ GOPATH로 설정!
funcmain() { var a bool = true fmt.Println(!a) var b int = 100 fmt.Println(b) var c float64 = 3.14 fmt.Println(c) var d string = "안녕하세요, 오효근입니다." fmt.Println(d) }
funcmain() { var A int = 10 if A == 10 { fmt.Println("Hi") } else { fmt.Println("Bye") } A = 20 if A == 10 { fmt.Println("Hi") } elseif A == 12 { fmt.Println("Hi") } else { fmt.Println("Bye") } }
1 2 3 4
$ go build main.go $ ./main Hi Bye
Loop Statement
반복문은 C와 매우 유사하여 쉽다!
main.go
1 2 3 4 5 6 7 8 9 10 11
package main
import ( "fmt" )
funcmain() { for i := 0; i < 10; i++ { fmt.Println(i, "Hi!") } }