# Go work 는 뭐하는 것인가?
워크스페이스에서 모듈관리하는 거라고 볼 수 있습니다 아래 예시처럼
workspace 디렉토리에서 하위 모듈을 사용 할 수 있어 여러 모듈을 관리하기 좋습니다.
# Prerequisites
- Go 1.18 이후 버전
- command terminal
# Module 만들기
학습할 디렉토리에서 workspace 디렉토리를 만듭니다.
하위 폴더에 또 다시 hello 를 만들어 봅니다.
go.mod 파일을 만듭니다.
go mod init test/hello
simple 하게 만듭니다.
stringutil.Reverse 함수는 스트링을 뒤집어주는 함수인데 스탠다드 패키지에 들어있습니다.
고랭 공홈에 나와있는 예제를 다운받아서 활용합니다.
go get golang.org/x/example
go run 으로 실행시면 보기와 같이 거꾸로 되어있습니다.
--------------------------------
여기까지 일반적인 방법으로 패키지를 다운받아 그걸 이용해 보았습니다.
이제 워크스페이스를 만들어봅니다.
# workspace 만들기
go work init ./hello
go.work 파일안을 보면
go 1.18
use ./hello
go.mod 파일과 비슷한 형태를 보입니다.
여기서 빌드할때 ./hello가 메인 모듈이어야 합니다.
Go 커맨드는 디렉토리를 벗어나 실행하려고 하면 어떤 모듈을 실행할지 모르기 때문에 에러를 내지만
위 예시처럼 상위 디렉토리에서 go.work 를 통해 모듈을 지정해서 실행 가능합니다.
# golang.org/x/example 모듈 다운 받고 수정하기
워크스페이스 디렉토리에서 예제를 다운 받습니다.
git clone https://go.googlesource.com/example
한번더 go.work use 를 합니다.
go work use ./example
example/stringutil 디렉토리 안에 파일을 하나 만들어줍니다.
# 워크스페이스 실행해보기
아까 실행해봤던 hello 파일에서 수정을 조금 해줍니다. stringutil 패키지 안에 만든 ToUpper를 사용해봅니다.
실행을 하면 Hello 가 전부 대문자로 출력되는걸 확인 할 수 있습니다. (직접 해보세요^^)
go.work 은 go mod -replace 대신에 사용하여 로컬 패키지를 이용 할 수 있습니다.
한 워크스페이스에서 두가지 모듈을 사용하니 수정하기도 쉽습니다.
필요한것만 사용하여 패키지 사용량을 감소 시켜 사용할 수도 있는 툴이니, 앞으로 잘 이용해 봐야겠습니다.
# Go work 커맨드
go work use [-r] [dir] 디렉토리가 있으면 대체하고 없으면 없애버립니다.
go work edit 은 go mod edit 과 비슷하게 동작합니다.
go work sync 는 디펜던시를 싱크합니다.
'프로그래밍 > GO' 카테고리의 다른 글
GO Generic 제네릭 짧게 알아봄 (0) | 2023.02.24 |
---|---|
리눅스 which Go로 만들어보자 Golang Example (0) | 2023.02.23 |
모듈 호출하기 Call your code from another module (0) | 2023.02.21 |
모듈 만들기 creating a module (0) | 2023.02.21 |
Golang 처음부터 시작해보기 (0) | 2023.02.21 |
댓글