golang 공부는 윈도우에서 이걸(링크) 사용해서 한다.


gopath / package

* 패키지 설치/관리는 가능하면 go get 대신 dep을 사용한다.

* 무질서한 gopath 때문에 작년에 한 번 포기 했었는데, 다시 보니까 아래와 같은 방식으로 하면 node에서 전역/지역 패키지 설치하는 것과 크게 다를게 없다.

* 전역 패키지는 tools/gotools로 잡혀 있고 도스창(Ctrl+Shift+t)에서 아래와 같이 한다.

 - go get "패키지 배포 경로"

* 지역 패키지는 gopath 때문에 타이핑을 여러 번 쳐야 하므로 그냥, Shift+F2 > dep **** 배치파일 실행

 - 배치파일 내용은...

 - 작업폴더를 gopath로 잡고

 - 해당 패키지 폴더로 가서 dep init 실행하는 수순임.


go extension

* F1을 누르면 볼 수 있는 명령 중에 package 설치 업뎃 명령은 좀 이상해서 사용하지 않는다.


go tool

* go tour는 그냥 샘플로 Launcher Extension에 넣어봤는데, 나머지는 모두 터미널에서 실행한다. 아직 뭐에 쓰는 건지도 모른다.


실행

* 디버그: F5

 - 왜인지는 모르겠는데 바로 된다. 패키지 의존성이 복잡해도 extension이 알아서 잘 식별해서 처리해주는 것 같다.

 - 180824에 출시된 go 1.11에 추가된 go modules는 아직 extension에서 지원하지 않는다.

* vscode 통합터미널

 - (작업폴더 루트에서) go build 패키지명 -> 작업폴더 루트에 실행파일 떨어짐

 - (작업폴더 루트에서) go install 패키지명 -> 작업폴더 루트/bin에 실행파일 떨어짐

 - (작업폴더 루트/src/패키지명 에서) go run 소스파일명 -> 바로 실행된다. 굳이 할 필요 있나...


DB

* nosql / key, value storage;

 - 뭐가 좋을지 갈피가 아직 안 잡힌다. bolt는 더이상 개발 안한다고 해서 불안하고, badger는 개발자가 너무 쇼맨십 위주로 움직이는 거 같고, golevel은 상대적으로 성능이 떨어진다고 한다.

* 관계형:

 - 순수 go로 만들어진게 tidb 밖에 보이질 않는데, 테스트해보니 mysql 문법과 완벽 호환은 개뿔... 좀 더 지켜봐야겠다.

 - 그래서 mariadb 포함시켜서 굴리는 걸로 결정


pkg 생성 시점: 모른다. 어떤 때는 무조건 생기고, 어떤 때는 한 번 지우고 나면, 죽어도 안 생긴다. 이해가 안 된다.



끝.