아따 어렵다 -_- 다른 동료 도움을 받아서 해결
일단 아래의 기본 구조를 따라가고
serial.go와 tcp.go는 이름만 거창하지 그냥 fmt.Println("hello serial world") 출력하는 테스트 코드만 들어있다.
$ tree . ├── go.mod ├── internal │ └── util │ ├── serial.go │ └── tcp.go ├── main ├── main.go ├── pkg │ └── mod │ └── cache │ └── lock └── web ├── img ├── index.html └── style.css 7 directories, 8 files |
go build 하면 에러가 발생하고
go mod init 프로젝트 명 으로 모듈을 초기화 해주고 나서 다시 빌드하면 문제없이 빌드된다.
go mod tidy는 먼지 조금더 찾아봐야 할 듯.
$ go build main.go main.go:6:2: package l2s/internal/util is not in GOROOT (/usr/lib/go-1.17/src/l2s/internal/util) $ go mod init test go: creating new go.mod: module test go: to add module requirements and sums: go mod tidy $ go build main.go |
go mod init 하면서 GOMOD 경로가 변경되는 듯.
$ go env | grep GOMOD GOMODCACHE="/home/minimonk/pkg/mod" GOMOD="/home/minimonk/src/l2s/go.mod" |
테스트 해보니 현재 빌드 경로에서 벗어나면 GOMOD 값이 변경된다. 신기하네..
$ go env | grep GOMOD GOMODCACHE="/home/minimonk/pkg/mod" GOMOD="/dev/null" |
함수명이 대문자로 시작해야 외부에서 호출 가능한... public 함수라고 해야하나?
go 키워드를 찾아봐야겠네.
Go에서는 대문자로 된 변수명은 패키지 외부에서 사용 할 수 있다라는 기능적 의미를 가지고 있어서 사용자가 이해하기 쉬운 측면이 있다. |
[링크 : https://blog.billo.io/devposts/golang_naming_convention/]
아래와 같은 디렉토리들로 기본 구성되고 src는 있어서는 안된다고 한다.
/cmd (메인을 여기에?) /internal (메인에서 호출한 사용자 작성 모듈들을 여기에?) /pkg (외부 종속성 추가) /vendor /api /web /configs /init /scripts |
[링크 : https://github.com/golang-standards/project-layout/blob/master/README_ko.md]
'Programming > golang' 카테고리의 다른 글
golang type 변환, type 확인하기 (0) | 2022.04.07 |
---|---|
go 변수, 상수, 배열 (0) | 2022.04.06 |
golang 다른 파일 함수 불러오기 (0) | 2022.04.04 |
liteide (0) | 2022.04.04 |
golang gore(repl), delve (0) | 2022.03.31 |