Golang/Basic

Zero 부터 시작하는 Golang - 개요, 설치

시바도지 2022. 2. 8. 22:20
반응형

고퍼(마스코트)의 기원 : https://blog.golang.org/gopher

 

The Go Gopher - The Go Programming Language

The Go Gopher Rob Pike and Andrew Gerrand 24 March 2014 The Go gopher is an iconic mascot and one of the most distinctive features of the Go project. In this post we’ll talk about its origins, evolution, and behavior. About 15 years ago—long before the

go.dev

공식 사이트 : https://golang.org/

 

The Go Programming Language

DevOps & Site Reliability With fast build times, lean syntax, an automatic formatter and doc generator, Go is built to support both DevOps and SRE.

go.dev

 

2009년 11월 구글에서 처음 발표된 후 2012년 3월에 정식 발표된 프로그래밍 언어이다.

로버트 그리스머(Robert Griesemer)롭파이크(Rob Pike), 켄톰슨(Ken Thompson)이 디자인 하였다.

2007년 경에 이들 세 사람이 새로운 언어에 대한 스케치를 하면서 프로젝트가 시작되었다.

이름이 이름인 만큼 검색이 불편한 경우가 제법 있어서 보통 Golang으로 검색하거나 발음하는 것이 수월하다.

Go언어 사용자들을 Gopher라고 부르며, Gopher들을 위한 연례행사인 Gophercon이 세계 각국에서 매년 열리고 있다.

 

온라인에서 코드 실행하기 : https://replit.com/languages/go

 

Go Online Compiler & Interpreter

Write and run Go code using our Go online compiler & interpreter. You can build, share, and host applications right from your browser!

replit.com

 

Golang 특징


  1. 정적 컴파일 언어다. build를 통해 실행 파일을 만든다.
  2. 컴파일러의 컴파일 속도가 매우 빨라 인터프리터 언어처럼 쓸 수 있다.
  3. 강타입 언어이다. 타입검사를 강하게 한다. 즉, 타입이 다르면 서로 연산할 수 없다.
  4. 고루틴(GoRoutine)이라는 비동기 메커니즘을 제공한다. 고루틴은 병렬로 동작하며 메세지 채널을 통해 값을 주고 받는다. 고루틴을 사용하면 이벤트 처리, 병렬 프로그래밍 등이 간단해진다. 병렬화된 고루틴의 동기화 문제는 프로그래머가 다뤄야 하며, 동기화를 무시할 경우 프로그램이 비정상 종료될 수 있다. 고루틴은 CPU 코어수와 무관하게 수백, 수천의 고루틴을 작성해도 성능에 문제가 생기지 않는다.
  5. 바이너리 컴파일러이므로 서로 다른 머신 플랫폼들을 타겟으로 배포해야 할 경우 환경변수를 그에 맞게 설정한 후 컴파일해서 여러 개의 배포판을 만들어야 한다.
  6. 가비지 컬렉션(Garbage Collection) 기능이 있다. 메모리를 알아서 관리해 준다.
  7. 클래스가 없다. 클래스는 없지만, 메소드를 가지는 구조체를 지원한다.
  8. 상속을 지원하지 않는다.
  9. 익명함수(Anonymous Function)를 제공한다. 함수 리터럴(Function Literal)이라고도 한다.
  10. 메모리 주소를 가리키는 포인터가 있다.
  11. 네임스페이스(Namespace)를 제공하지 않는다. 모든 코드는 패키지 단위로 분리된다.
  12. 바이트코드(bytecode)를 생성하지 않으므로, 바이너리만 배포하면 해당 타깃머신에 맞춰서 각각 컴파일 해야 한다.
  13. 단순함과 실용성을 지행하는 언어다. keyword가 25개 밖에 되지 않고 문법 또한 간결해 입문이 쉬운 편이다.

 

설치


Go 공식 웹사이트 인 https://go.dev/ 에서 해당 OS 버전의 Go를 설치한다.

 

The Go Programming Language

DevOps & Site Reliability With fast build times, lean syntax, an automatic formatter and doc generator, Go is built to support both DevOps and SRE.

go.dev

Windows에서 설치하기

Windows에 Go를 설치하기 위해서는 MSI(*.msi) 파일을 다운받아 실행하면 되는데, Go는 기본으로 C:\go 폴더에 설치되며, MSI가 C:\go\bin을 PATH 환경변수를 추가한다.

Linux에서 설치하기

리눅스 커맨드 라인에서 설치하기

  1. 압축파일을 다운로드 한다.
curl -o ./go1.16.5.linux-amd64.tar.gz https://storage.googleapis.com/golang/go1.5.3.linux-amd64.tar.g>](<https://storage.googleapis.com/golang/go1.5.3.linux-amd64.tar.gz
  1. 다운로드 한 파일을 /usr/local/go에 (root 또는 sudo를 사용하여) 압축 해제한다.
tar -C /usr/local -xzf go1.16.5.linux-amd64.tar.gz
  1. Go 실행경로인 /usr/local/go/bin 폴더를 PATH에 추가한다.
PATH=$PATH:/usr/local/go/bin

 

편집기


Go는 다양한 편집기로 개발할 수 있다.

  • Atom Github에서 개발한 오픈소스 에디터설치하기 : https://atom.io/
  • Visual Studio Code Microsoft에서 개발한 Windows, MacOS, Linux 용으로 개발한 소스 코드 편집기이다.             설치하기 : https://code.visualstudio.com/
  • https://www.jetbrains.com/ko-kr/go/ JetBrains에서 개발한 크로스 플랫폼 IDE유료지만, 학생이라면 학생 인증 후 무료로 사용할 수 있다.

 

코드 예시


  • go의 모든 코드는 패키지로 시작해야 한다.
  • 모든 코드는 패키지 내에 있다.
  • main 패키지가 하나 있고, 여러 개의 다른 패키지로 구성되어 있다.
package main //main() 함수를 포함하는 패키지의 이름이 main이 아닐 경우 에러가 발생한다.

import "fmt"

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

실행 테스트

  1. 터미널을 켠다.
  2. 작성한 코드가 위치한 디렉토리로 이동한다.
cd [파일 경로]
  1. go run 명령어를 사용하면 직접 컴파일과 동시에 실행하게 된다. (이때 실행 파일인 .exe는 생성되지 않는다.)
go run [파일 명]
  1. 실행 파일 .exe를 생성하기 위해서는 go build 명령을 사용한다.
go build [파일 명]
반응형