Tucker의 Go 언어 프로그래밍 책과 유튜브를 통해 학습 중입니다.
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 |