이 글은 골든래빗 《Tucker의 Go 언어 프로그래밍》의 00~2장 써머리입니다.
안녕하세요. 저희 소개를 하자면 게임 회사에서 Golang을 사용하여 sever를 개발하고 있는 31살 남자 개발자입니다. 긴 연휴에 golang을 다시 처음부터 공부할까 생각 중 golang 카톡 방에서 좋은 기회가 생겨 참여하게 됐습니다. 앞으로 Tucker의 Go 책을 기반으로 리뷰해 볼 예정입니다. 잘 부탁드립니다.
0 단계의 목차는 다음과 같습니다.
0. 개발 환경 구축
1. 컴퓨터의 원리
2. 프로그래밍 언어
0. 개발 환경 구축
공부할 때 사용하는 노트북의 운영체제는 windows이지만 Linux 환경도 사용하기 위해 wsl를 사용하고 있다. 회사에서도 Golang을 사용하기 때문에 노트북의 windows 환경엔 설치가 돼있어 wsl의 Linux 배포판인 Ubuntu로 개발 환경을 구축해 보겠다. 참고로 ubuntu 명령어들을 사용해 리뷰할 예정이라 vscode는 당분간 사용하지 않을 예정이다. (debug할 때 사용할 생각)
책에는 windows, mac, linux(ubuntu) 운영체제에서 Golang -> git -> vscode -> vscode golang extension -> 예제 프로젝트 복사 순으로 기본적인 개발 환경과 앞으로 책에서 나올 예제 코드들을 구성하도록 설명하고 있지만 노트북에는 전부 깔려 있기 때문에 본인은 ubuntu에서 Golang을 설치하고 프로젝트를 생성 후 github와 연동하는 순서로 리뷰해 보겠다. 또한 책에선 1.16 version을 다운로드하지만 현재는 1.21 version까지 배포된 상태고 본인은 1.18 version으로 설치할 예정이다.
wsl에서 golang을 설치할 땐 크게 두 가지의 방법이 있다. (공식 사이트의 설치 페이지)
- windows에 다운로드하여 ubuntu에서 windows에 다운로드한 경로에서 설치 파일을 옮겨 설치하는 방법
1.18 version을 설치하기 위해선 Archived에서 찾아서 설치해야 한다. 위에 공유한 링크를 클릭해서 들어가서 아래로 스크롤하다 보면 아래와 같은 그림이 보이고 show를 눌러주면 version list가 나온다.
1.18.10 version을 찾은 후 linux에서 설치할 수 있는 파일을 다운로드
마지막으로 windows의 download 폴더에서 다운로드한 go1.18.10.linux-amd64.tar.gz를 옮기면 된다.mkdir download cd download sudo mv /mnt/c/Users/JAVAinsect/Downloads/go1.18.10.linux-amd64.tar.gz .
- ubuntu에서 명령어를 사용해 다운로드하고 설치하는 방법
1번 방법처럼 공식 사이트에서 다운로드하고 싶은 version을 찾는 건 동일하다. 다만 다운로드 링크가 필요하기 때문에 오른쪽 클릭 후 다운로드 링크를 복사해야 한다. 링크를 복사했다면 우분투에서 wget 명령어를 사용해 tar.gz 파일을 다운로드한다.
위 두 방법 중 하나를 따라 해서 install zip 파일을 다운로드하였다면 압축을 풀어야 한다. 책에서 /usr/local 경로에 풀기 때문에 똑같이 진행하겠다. 또한 기존에 /usr/local/go 가 있다면 삭제 후 설치하라 설명하고 있기 때문에 삭제 후 진행하겠다.
sudo rm -rf /usr/local/go
sudo를 사용하거나 파일을 삭제하는 rm 명령어 사용 시 -rf 옵션을 줄 땐 신중하게 써야 한다. r 옵션은 recursive 의미고 f는 force라는 의미다. 삭제가 끝났으면 설치하면 된다.
sudo tar -C /usr/local -xzf ~/download/go1.18.10.linux-amd64.tar.gz
tar 명령의 C 옵션은 압축을 풀 경로를 설정하고 x는 tar 확장자를 압축푼 다는 의미고 z는 gzip을 압축하거나 풀거나고 f는 압축풀 파일 이름을 명시하는 옵션이다.
지금까진 golang을 사용할 수 있는 환경만 설치한 것이고 지금부터 운영체제에서 사용할 수 있게 환경 설정을 해야 하는데
여러 개의 환경 변수를 설정해야 한다. ~/.profile 파일에 변수를 선언하여 export 해준 후 source 명령어를 사용해 적용해야 한다. linux에서 파일을 수정, 생성할 때 사용하는 에디터가 여러 개 있지만 본인은 vi를 사용한다. (책에선 nano)
일단 go 명령어를 사용할 수 있게 GOROOT 변수를 설정해야 한다.
vi ~/.profile
G (파일의 맨 밑 줄로 이동)
o (소문자 o고 현재 위치에서 밑으로 개행하면서 입력 모드로 변경)
export GOROOT=/usr/local/go
esc (입력 모드에서 명령 모드로 전환)
:wq (수정된 내용을 저장하고 vi에서 나가기)
위 명령어처럼 따라 하면 GOROOT 변수를 선언함과 동시에 외부에서 사용할 수 있게 하는 것인데 source 명령어를 사용하지 않으면 적용이 안된다.
echo는 console에 출력하는 명령어고 $ 기호와 변수 명을 같이 사용하면 변수를 호출한다는 의미이다. $GOROOT를 사용해도 go 명령어를 사용할 수 없는데 go 명령어를 사용할 수 있도록 path에 등록해 보겠다.
vi ~/.profile
G
o
export PATH=$GOROOT/bin:$PATH
esc
:wq
source ~/.profile
go version
위 명령어처럼 입력하면
go 명령을 사용하여 install한 go version에 대한 정보를 볼 수 있다. 만약 go 명령어를 못 찾으면 댓글에 남겨주길 바람
책에선 GOPATH 환경 변수도 선언하지만 본인은 필요할 때 설정할 예정이다.
go 명령어를 사용할 수 있으니 간단하게 "Hello word!!!"를 출력하는 프로그램을 코딩해 보고 이 파일을 github에 올리는 것으로 마무리하겠다.참고로 github repositiory를 만든 게 있기 때문에 repository 만드는 것은 생략할 예정이지만 remote를 등록하는 방향으로 리뷰함
먼저 작업할 폴더를 만든다.
mkdir ~/github/Golang -p
mkdir은 directory(linux 쪽에서는 folder라 안 하고 directory라 함)를 생성하는 명령어고 p 옵션 parent를 의미하고 directory를 생성할 경로에 해당 directory가 없으면 만들어 준다. ~/github/Golang에서 github가 없을 경우 github directory를 생성
cd ~/github/Golang
vi main.go
i (입력 모드로 전환)
main.go 파일을 생성한 후 아래 코드를 입력한다.
package main
import "fmt"
func main() {
fmt.Println("Hello world!!!")
}
esc (입력 모드에서 명령 모드로 전환)
:wq (파일을 저장하고 vi 나가기)
go build main.go
./main (main.go 파일을 빌드하면 main이라는 실행 파일이 생김)
결과는
위 이미지처럼 나오면 성공이다. 본인은 windows에서 go를 설치 후 go build가 안 되는 경우가 있었는데 gcc가 문제였던 적이 있다.
이제 git을 이용해 github의 repository와 연동해 보겠다.
ubuntu에서 git을 설치하는 방법은 너무 쉽다.
sudo apt upgrade
sudp apt install git
git 설치가 끝났으면 init한 후 commit 하거나 push할 때 자신을 식별할 수 있도록 config를 설정한다. (--global 옵션을 사용하면 global로 설정할 수 있으니 참고)
cd ~/github/Golang
git init
git config --local user.name "wonyong.yun"
git config --local user.email "ywyi1992@gmail.com"
git config --local -l (등록한 정보 확인)
위처럼 설정한 후 github repository를 연동한다. (설정이 필수는 아님. 안 해도 괜찮음)
git remote -v (remote 정보 확인)
git remote add origin https://github.com/YunWonYong/Golang.git (origin이라는 명으로 연동함)
git remote -v
remote 연동이 끝났다면 remote의 정보를 받아온다.
git pull origin master (여기서 쓰이는 origin이 remote add할 때 쓴 origin임)
git log (잘 연동 됐는지 확인 용도로 사용)
이제 main.go 파일을 연동한 repository에 push할 차례다.
git add main.go
git commit -m "hello world"
git push origin master
push할 때 repository에 권한이 있는 계정으로 로그인을 요구하는데 이 부분은 알아서 해결하기로... ㅎ;;
1. 컴퓨터의 원리, 2. 프로그래밍 언어 목차는 중요하긴 하지만 교양이라 생각이 들어 책을 직접 읽는 것이 좋다 판단하여 리뷰하지 않을 예정이다.
'Golang > Tucker' 카테고리의 다른 글
[묘공단] 4주차 (2) | 2023.10.22 |
---|---|
[묘공단] 3주차 (2) (1) | 2023.10.16 |
[묘공단] 3주차 (1) (2) | 2023.10.15 |
[묘공단] 2주차 (2) (1) | 2023.10.09 |
[묘공단] 2주차 (1) (0) | 2023.09.29 |