선수로 산다, 때론 좋은 코치로

[golang] 도서-Go 언어 실전 테크닉 본문

개발 관련/go

[golang] 도서-Go 언어 실전 테크닉

godsman 2018. 2. 1. 15:14

도서-Go 언어 실전 테크닉


Go 언어에 관심이 생겨서 한 번 읽어봄


일단 설치

홈페이지 방문 - https://golang.org/

개발자라서 Hello, World에 익숙하다. Hello, 世界는 무척 신선하다.

한자라서 익숙하면서도 영어와 한자의 조합, 한글이 없는 조합이 여러가지를 생각나게 한다


Download Go - Microsoft Windows go1.9.3(91MB)를 다운받아서 설치

디폴트로 C:\go에 설치하고, PATH에 C:\go\bin 추가

workspace는 디폴트인 %USERPROFILE%\go 를 변경하고 싶어서 GOPATH를 이용해서 변경했다.

GOPATH를 추가하려고 시스템 설정을 찾아보고 있다. 없어졌다.

윈도우 10 업데이트 후, 사용자모드에서 시스템설정이 사라짐, 검색에서 "고급 시스템 설정"을 실행한다

GOROOT C:\go

GOPATH S:\go


파워쉘에서 확인

PS C:\Users\shyan> go env GOROOT -> c:\go

PS C:\Users\shyan> go evn GOPATH -> s:\go

PS C:\Users\shyan> go version


Gore 설치

go get githum.com/motemem/gore

Gore: Go REPL - https://www.slideshare.net/motemen/gore-go-repl

Git으로 관리되는 패키지의 경우, go get 하는 것은 git clone과 동일하다

Go get에서 go tool을 설치하는 경우, 단점
• Go 환경이 필요하다
• 개발중인 최신 상태가 설치된다
• 바이너리에 빌드정보가 포함되지 않는다

Gofmt
The Cultural Evolution of gofmt - https://talks.golang.org/2015/gofmt-en.slide

Go는 panic이라는 예외가 있다. 예외 처리 기능은 없다고 생각하는 편이 좋다.
Go는 정규표현식은 피하는 것이 좋다(성능 때문), strings 표준 패키지 활용
Map 피하기, struct에서 type정의가 효과적, struct는 메소드 추가 가능, map은 쓰레드 safe하지 않음.
거대한 struct 사용하지 않기, 상속하지 않기 -> 상속보다는 위임
Build Constrants, // +build debug 로 시작하는 주석 행과 빈행

모니터링
runtime.NumGoroutine
runtime.ReadMemStats


2장 사내툴
Perl, Ruby, Python, Java

try-with-resource 코드 중복 -> defer 사용
• 호출 순서와 반대로 실행

Daemon 도구
• Supervisord, daemonize, upstart, systemd
• 윈도우, nssm

Go GUI
• GoQT
• Ui
• Go-gml
• Go-gtk

Go-shiny


Comments