Programming/golang2022. 4. 6. 10:50

아따 어렵다 -_- 다른 동료 도움을 받아서 해결

 

일단 아래의 기본 구조를 따라가고

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
Posted by 구차니