본문 바로가기
Language/Golang

Golang (Go 언어) 이란?

by HeeWorld 2024. 10. 22.

Tucker의 Go 언어 프로그래밍 책과 유튜브를 통해 학습 중입니다.

 

Golang 마스코트 Gopher(고퍼)

 

Go 역사

- Go 언어는 2009년 발표된 오픈 소스 프로그래밍 언어

- 무료로 사용할 수 있고, 누구나 내부 구조를 볼 수 있으며, 누구나 Go 언어 발전에 이바지할 수 있음

- 2007년부터 개발을 시작해 2009년 11월 10일에 세상에 공개

- 홈페이지에서 최신 배포판을 다운로드할 수 있고, 다양한 공식 문서를 볼 수 있으며 간단한 코드도 돌려볼 수 있음

 

* Go 홈페이지 주소: https://go.dev

* 온라인 Go 언어 컴파일러: https://go.dev/play

 

 

Go 언어 실행 단계

 

1. 폴더 생성

- Go 언어의 모든 코드는 패키지 단위로 작성

- 같은 폴더에 위치.go 파일모두 같은 패키지에 포함

- 패키지명으로 폴더를 사용

 

예를 들어, Golang/Hello 폴더를 생성하고 그 하위에 여러 .go 파일을 생성한다면, 모두 Hello 패키지에 포함된다.

만약, Golang/Hello/ 하위에 Example 폴더를 생성하고 여러 .go 파일을 만들면 이런 경우 Hello가 아닌, Example 패키지에 포함된다.

따라서 폴더가 다른 경우 패키지도 다르다.

 

2. .go 파일 생성 및 작성

- Go 문법을 통해 코드를 만들고, 확장자는 반드시 .go로 끝나야 함

 

3. Go 모듈 생성

- Go 1.16 버전 이후로 Go 모듈이 기본으로 적용

- 모든 Go 코드는 빌드하기 전에 모듈을 생성해야 함

- 모듈 생성은 'go mod init <Module Name>' 으로 사용

- 모듈 생성 시, go.mod 파일이 생성되고 해당 파일에는 모듈명과 Go 버전, 필요한 패키지 목록이 포함되어 있음

 

4. 빌드(Build)

- 'go build' 명령은 Go 코드를 기계어로 변환하여 실행 파일을 만듦

- GOOS와 GOARCH 환경변수를 조정해서 다른 운영체제아키텍처에서 실행되는 실행파일을 만들 수 있음

- 터미널에서 'go tool dist list' 명령을 실행하면 가능한 운영체제와 아키텍처 목록 확인 가능

 

5. 실행

- 명령어로 실행하면 됨

- ex) ./hello

 

 

Go 언어 코드 해설

 

# 1번 
package main

# 2번
import "fmt"         

# 3번
func main() {       

# 4번
//Hello World! 

# 5번
	fmt.Println("Hello World!")
    
# 6번
}

 

 

1번) Package main

- 패키지 선언으로 해당 코드가 어떤 패키지에 속하는지 알려줌

- 패키지 코드는 묶음이고, 여러 기능을 제공

- Go 언어의 모든 코드는 반드시 패키지 선언으로 시작해야 함

- package main은 main 패키지에 속한코드임을 컴파일러에게 알려줌

- main이 의미하는 것은 프로그램 시작점을 포함하는 패키지로 main은 반드시 하나여야 함

 

프로그램 시작점(Starting Point)? 

프로그램이 시작된다는 것은 메모리에 올라가서(copy), CPU가 한 줄씩 실행함

-> 코드를 실행할 시작점이 어디인지 의미하는 것(Starting Point)

 

2번) import "fmt"

- fmt라는 패키지를 가지고 온다는 의미

- fmt는 format의 약자로, Go에서 만든 표준 라이브러리(패키지) 중 하나

   (Go에서 제공하는 표준 패키지와 다른 사람들이 제공하는 외부 패키지가 있음)

- 여러 패키지를 사용하고 싶을 때 괄호 ()를 써서 여러 패키지 정의 가능

 

3번) func main() {

- function의 약자함수로 main을 정의하는 것(함수 선언)

- main은 시작점을 나타내는 함수이름 (사실 영문자로 시작하는 아무거나 사용하면 됨 하지만, main은 특별한 약속의 키워드 = 프로그램 시작점)

   - 함수는 어떤 연산들을 묶어 놓은 것 

 

4) //Hello World! 출력

- //은 한 줄 주석 예약어이며, //와 그 다음 내용은 주석처리가 됨

- 주석문은 동작하지 않음

- Go 언어에서는 외부로 공개되어 다른 프로그램에서 쓰이는 함수 앞에 함수명으로 시작하는 주석을 달아 함수를 설명하도록 코딩 규약으로 권장

- /**/ 을 사용하면 여러 줄 주석이며, /* 로 주석 시작을 */로 끝을 알림

 

5번) fmt.Println("Hello World!")

- fmt.Println()은 표준 출력으로 문자열을 출력하는 함수

- fmt 패키지에 포함되어 있는 기능 중 println 이라는 함수를 call(수행/호출)하겠다는 의미로 ()에 있는 것을 출력

  * ln은 line의 약자, 문자열을 한 줄 출력해라.

 

6번) }

- 코드 블록을 종료

- 여기서는 func main() {에서 시작한 main() 함수 블록을 종료하는 용도로 사용

- main()이 종료되기 때문에 프로그램도 종료

'Language > Golang' 카테고리의 다른 글

Golang (Go언어) 함수(Function)  (2) 2024.10.30
Golang (Go언어) 연산자(Operator)  (0) 2024.10.26
Golang (Go언어) fmt 패키지  (3) 2024.10.26
Golang (Go언어) 변수  (1) 2024.10.24
Golang (Go 언어) 설치 (Mac)  (0) 2024.10.22