본문 바로가기
프로그래밍/Go

고(Golang) | Tutorial | 5분만에 Golang 개발 환경 세팅하기

by K-인사이터 2023. 1. 27.
반응형

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

 

서론

안녕하세요 K-IN 입니다. 

 

오늘은 맥북에서 Golang 프로젝트를 시작하는 초간단 방법을 설명드리겠습니다. 

Visual Studio Code 를 통해서 간단한 프로그램을 작성하고 헷갈릴수 있는 GOPATH 환경 변수에 대해서도 알아보겠습니다. 

 

준비물

아직 맥북 등 쾌적한 개발환경이 준비되지 않았다구요? 

그렇다면, 이번 기회에 개발에 있어서 필수적인 도구들을 세팅해보는 것을 추천드립니다. 

 

Apple 2020 맥북 에어 13, 스페이스 그레이, M1, 256GB, 8GB, MGN63KH/A, MAC OS Apple 2022 에어팟 프로 2세대 블루투스 이어폰, 화이트 Apple 에어팟 맥스 블루투스헤드셋, 스페이스 그레이 Apple 2021 맥북프로 14, 스페이스그레이, M1 Pro 8코어, GPU 14코어, 512GB, 16GB, MKGP3KH/A, MAC OS Apple 정품 아이폰 14 Pro 자급제, 스페이스블랙, 256GB Apple 2022 맥스튜디오, M1 Max 10코어, GPU 24코어, 32GB, 512GB

 

설치하기

macos 는 homebrew 를 통해서 편리하게 도구들을 설치할 수 있습니다. 아래의 링크를 참조하여 필요한 도구를 준비해 봅시다. 

brew 유틸리티는 GUI 도구 설치 시에 cask 라는 옵션을 추가해주어야 합니다. 잘 설치되지 않을까 걱정하지마세요. homebrew 는 강력합니다. 

  • visual studio code (FREE)
  • golang (FREE)

https://formulae.brew.sh/cask/visual-studio-code

 

visual-studio-code

Homebrew’s package index

formulae.brew.sh

https://formulae.brew.sh/formula/go#default

 

go

Homebrew’s package index

formulae.brew.sh

 

작업 폴더 및 환경 변수 설정

Visual Studio Code(이하 vscode, 브스코드)를 설치하고 golang 설치에는 1분이 걸리지 않습니다. 내가 원하는 작업 폴더로 이동해 프로젝트 폴더를 생성합니다. 

mkdir step01
cd step01

또한, GOPATH 를 지정하여 의존성 관리(프로그램 내에서 사용되는 패키지들의 소스 및 바이너리 파일 보관) 및 소스코드 빌드와 빌드된 바이너리 설치에 따른 설치 경로 지정 등을 제공할 수있습니다. 아래와 같이 환경 변수를 설정해봅시다. 

export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin

이 환경 변수는 편리하게 ~/.zshrc 와 같은 쉘 환경 변수 선언 파일에 지정하도록 합니다. 매번 명령어를 실행하지 않아도 동작하도록 해줍니다. 

 

이제 vscode 를 통해 step01 폴더를 열어봅시다. 

code . # vscode 프로그램을 현재 폴더 기준으로 실행함.

그리고 아래의 명령어를 실행하여 go(고) 프로젝트를 초기화 해봅시다. 

go mod init example.com/step01 # (1)
  • (1) : go mod init 은 go.mod 파일을 초기화하고 생성합니다. 

go.mod 파일이 생성되면 여러분이 지정한 모듈(module) 이름이 지정됩니다. 그리고 go 의 버전 정보도 같이 기록됩니다. 

 

생성된 go.mod 파일

소스코드 작성 및 의존성 설치 

hello.go 파일을 생성해서 아래와 같이 소스코드를 작성해봅니다. 아직은 문법에 신경쓸 필요는 없습니다. main 함수가 entry point 라는 점만 기억하면 대 성공입니다. 

package main

import "fmt"

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

다시, vscode 로 돌아가봅시다. 그리고 마켓플레이스에서 갓 구글(Google)이 미리 만들어 둔 Go 를 설치합니다. 이 확장(extension)은 Go 프로그래밍을 vscode 에서 할수 있도록 도와줍니다.

 

 

그리고, 설치 후에 vscode 는 gopls (Go Please)를 설치해달라고 팝업을 통해 요청합니다. Yes를 눌러주면 알아서 설치합니다. 혹은 아래와 같이 명령어를 통해 수동(go get 명령어 사용)으로 설치할 수 있습니다. 

 

go help get 명령어를 입력하면 get 서브 커맨드에 대한 세부적인 설명을 확인할 수 있습니다. 

go get -v golang.org/x/tools/gopls

여러분의 vscode 는 이제 더욱 강력해져 golang 이라는 처음 접하는 언어도 잘 분석해서 여러분의 코딩 경험 강화를 도울 것입니다. 

 

자! 작성된 hello.go 소스코드를 실행해봅니다. 

go run . # (1)
  • (1) : go run 명령어는 작성된 소스코드를 실행합니다. 그리고 dot(닷, .)은 "현재 폴더를 기준으로" 라는 의미를 담고 있습니다. 즉, "현재 폴더를 기준으로 제공되는 파일을 읽어 들여서 실행하라" 라는 의미입니다. 

실행하면 아래와 같이 Hello, World! 문자열을 잘 출력합니다. 성공! 

 

어려운 Go 언어(Golang)를 학습한 당신에게 선물을! 

프로그래밍 공부에 박차를 가하고 있는 당신의 모습 너무나 멋집니다! 

그런데, 아직도 좁은 모니터를 통해서 소스코드를 열심히 보고 계신가요? 현직자 입장에서 이러한 자세와 환경은 거북목을 유발하고 시력 저하를 초래합니다! 

 

멋진 작업 환경을 구성해서 여러분의 건강과 효율을 지키면 투자금액의 두배 세배의 이익을 볼 수 있을것이라고 확신합니다! 

 

큰 모니터를 구비해두고 여러분의 소중한 맥북과 연결하면 대화면에서 여러개의 창을 띄워두고 작업할 수 있습니다. 노트북은 아무리 좋아도 모니터의 크기에는 한계가 있으니까요!

 

이에, 아래의 엄선된 제품들을 추천드립니다!

 

한성컴퓨터 54.6cm FHD 프리싱크 리얼75 평면 모니터, ULTRON 2235V PLUS(일반) LG모니터 81.28cm모니터 컴퓨터모니터 32MN500MW IPS FHD LG전자 60.4 cm FHD 프리싱크 IPS 모니터, 24MK430H LG전자 68.6cm FHD 모니터 화이트, 27MN430HW [엘지전자] 27GQ50F 27인치 울트라기어 FHD 165Hz 게이밍모니터, LED Monitor (27GQ50F) 삼성전자 S24R35A LS24R35AFHKXKR 60.96cm 컴퓨터 모니터 삼성전자 F24T350 LF24T350FHKXKR 60.96CM 컴퓨터 모니터

외부 패키지 설치 와 실행 

모든 것을 혼자서 만들어 낼 수 있으나 시간이 많이 걸릴 것입니다. 장기적으로는 현명하나 단기적으로는 현명하지 않습니다. 특히, 프로젝트를 진행하는 입장에서는 제공되는 도구들을 적절히 사용해야 합니다. 

 

따라서, 외부 패키지를 설치를 통해서 개발 시간을 단축하는 것이 중요합니다. 갓 구글(Google)은 다행히도 이러한 써드 파티 패키지들을 한데 모아놓은 사이트를 제공하고 있습니다. 

 

https://pkg.go.dev/

 

Go Packages

 

pkg.go.dev

 

이번에 여러분이 구현해야될 프로그램은 격언을 랜덤하게 출력하는 프로그램입니다. 그런데, 격언 문자열들을 일일이 타이핑하기에는 너무나 우리에겐 시간이 부족합니다. 

 

다행히 rsc.io/quote 라는 패키지를 pkg.go.dev 사이트를 통해서 발견했습니다! 유레카! 자 이제 패키지를 설치하고 빠르게 코드에 적용해보겠습니다. 

https://pkg.go.dev/rsc.io/quote@v1.5.2#section-readme

 

quote package - rsc.io/quote - Go Packages

Package quote collects pithy sayings. This section is empty. This section is empty. Glass returns a useful phrase for world travelers. Go returns a Go proverb. Hello returns a greeting. Opt returns an optimization truth. This section is empty.

pkg.go.dev

 

이미 위에서 go get 명령어의 사용을 알려드렸으니 이번에는 mod 서브 커맨드를 통해서 진행해보겠습니다. 우선 소스코드부터 수정합니다. 

package main

import (
	"fmt"

	"rsc.io/quote" // (1)
)

func main() {
	fmt.Println("Hello, World!")
	fmt.Println(quote.Go()) // (2)
}

오마이갓! 새로운 코드가 늘었습니다. 여러분 걱정하지마세요! 빠르게 설명드리겠습니다. 

  • (1) : pkg.go.dev 사이트를 통해서 파악한 외부 패키지의 이름을 선언합니다. 여기서 기존 코드와의 다른 점은 여러 패키지들을 선언하기 때문에 괄호"()"를 import 구문 뒤에 추가합니다. 그리고 단순히 엔터를 눌러서 "rsc.io/quote" 를 작성합니다. 
  • (2) : 패키지 설치 및 함수를 실행합니다. 우리가 원하는 격언들이 랜덤하게 쏟아질 것으로 기대됩니다. (두근두근)

그런데! vscode 는 quote 패키지가 없다고 에러를 출력할 것입니다. 두려워 마시고. 터미널을 열어보세요! 그리고 아래의 명령어를 실행합니다. 

$ go mod tidy # (1)
go: finding module for package rsc.io/quote
go: downloading rsc.io/quote v1.5.2
go: found rsc.io/quote in rsc.io/quote v1.5.2
go: downloading rsc.io/sampler v1.3.0
go: downloading golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c

go mod tidy 를 명령어를 실행하면 여러분이 선언했던 패키지들을 자동으로 다운받아서 사용할 수 있도록 해줍니다. 너무 알흠답다고 할 수 있겠네요. 

  • (1) :  "go help mod tidy" 명령어를 통해 tidy 라는 서브커맨드가 제공하는 기능을 확인할 수 있습니다. 이번 시간에는 제가 풀어서 설명드리겠습니다. "go.mod 파일과 소스코드를 매칭하여 설치되지 않은 모듈(패키지)들을 설치하고 사용하지 않는 모듈 패키지는 제거한다". 즉, rsc.io/quote 패키지를 설치하는 것을 의미합니다.

쉘 환경에서 go run 을 동일하게 실행하면 (2) 와 같이 새로운 문구가 출력되는 것을 확인할 수 있습니다. 한번의 패키지 설치로 여러분의 고민이 한방에 해결된 것을 알 수 있습니다! 

$ go run .  # (1)
Hello, World!
Don't communicate by sharing memory, share memory by communicating. # (2)

프로그램 빌드 및 설치

멋진 프로그램을 만들었는데 무언가 부족합니다. 맞습니다. 여러분의 컴퓨터 환경 어디에서도 사용할 수 있도록 "빌드" 와 "설치"가 필요합니다. Go 언어(golang)은 이것을 두번의 명령어 만으로 복잡한 과정을 생략하는 엄청난 기능을 제공하고 있습니다.

 

C/C++ 세대는 아마 울지도 모르겠습니다만! 우리는 현재를 살아야 합니다! 

 

터미널에서 아래와 같이 명령을 입력해주세요. 

$ go build  # (1)
$ go install # (2)
  • (1) : 여러분의 소스코드를 빌드합니다. 바이너리로 만듦 
  • (2) : 바이너리를 GOPATH 환경 변수에 지정한 경로로 이동합니다. 

위 명령의 역할은 딱 두가지입니다. 바이너리 생성 및 설치 경로로 이동. 다행히 여러분은 GOPATH 환경변수를 선언하고 PATH 환경변수에 등록했습니다. 즉, 터미널 환경 어디에서도 여러분이 만든 멋진 "격언 생성기"를 실행하여 여러분에게 동기부여를 해줄 것입니다. 

 

아래의 명령어들을 실행해볼까요? 

위에서 GOPATH 환경 변수를 지정했습니다. GOPATH 하위 폴더에 보통 세가지 폴더가 놓입니다. 

  • bin : Go 언어와 관련된 바이너리 파일
  • pkg : 여러분이 설치한 외부 패키지가 위치하는 폴더 
  • src : 여러분의 작업 폴더 

Go 언어는 여러분이 제작한 프로그램을 빌드 및 설치 시에 bin 폴더로 향하도록 합니다. 따라서 ls 명령을 통해 step01 바이너리 파일이 생성된 것을 알 수 있습니다. 

 

그리고 콘솔에서 어떠한 폴더에서도 step01 명령을 실행하면 여러분이 원하는 격언을 출력할 수 있습니다. 

$ ls ~/go/bin 
golint gopls  step01

$ step01 
Hello, World!
Don't communicate by sharing memory, share memory by communicating.

 

맥북 외의 대안 노트북들

지금까지 맥북에 대한 추천을 드렸습니다만 가격 부담이 크기 때문에 다른 대안을 제시하는 것도 중요하다고 인식했습니다. 이에, 가!성!비 제품을 선별해 보았으며 여러분의 여정에 있어서 든든한 파트너가 될 것이라고 믿어 의심치 않습니다! 

 

자신을 위한 투자를 통해 여러분의 미래를 설계해 나가는데 큰 도움이 되었으면 합니다. 

 

Apple 2021 맥북프로 14, 스페이스그레이, M1 Pro 8코어, GPU 14코어, 512GB, 16GB, MKGP3KH/A, MAC OS LG 그램 16인치 17인치 11세대 i7 512G RAM16G 일반 2IN1터치스크린 16Z90P 16T90P 17Z90P 노트북 윈도우포함, 16인치 터치스크린, WIN11 Home, 16GB, 512GB, 코어i7, 블랙 삼성전자 2021 노트북 플러스2 15.6, 퓨어 화이트, 셀러론, NVMe128GB, 8GB, WIN10 Pro, NT550XDA-K14AW 삼성전자 2022 갤럭시북2 39.6cm, WIN11 Home, 그라파이트, 16GB, 1TB, 코어i7, NT750XEW-A71AG 레노버 2022 씽크북 14 G4+ ARA, Arctin grey, 512GB, 라이젠7, 16GB, ThinkBook 14 Gen4+ ARA - 21D0000NKR, WIN11 Home 에이수스 2022 노트북 17.3, Mecha Gray, ASUS TUF Gaming A17 FA707RM-HX016, 라이젠7 5세대, 512GB, 8GB, Free DOS Apple 2021 맥북프로 16, 스페이스그레이, M1 Pro 10코어, GPU 16코어, 512GB, 16GB, MK183KH/A, MAC OS

 

맺음말

지금까지 맥 환경에서 Go 언어 개발 환경을 설치하고 "격언 출력 프로그램"을 간단히 만들어 보았습니다. 이를 통해 GO 프로젝트를 시작하는 방법을 모두 이해하였고 필요한 패키지를 설치하는 방법에 대해서 이해하여 프로그램 작성 시간을 대폭 줄일 수 있는 역량을 얻었습니다. 

 

이 글이 여러분의 여정에 도움이 되길 바랍니다. 

K-IN 올림.

반응형