golang - nil

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. nil 타입을 가진 nil nil은 사실 타입이 있다. nil과 nil이 등가가 아닌 것처럼 보인다 nil이 타입 정보를 가지므로 nil==nil 이 true가 된다는 법은 없다. true가 되기 위해서는 우변과 좌변의 “nil”...
더 읽기

golang - error

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. Error 스택 상태 출력과 에러 핸들링 github.com/pkg/errors 를 사용하여 error 오브젝트를 랩핑하면 스택 트레이스를 추가할 수 있다. error 중의 스택 트레이스는 “%+v” 포맷 지정으로 출력 할 수 있다. 또 errors.Cause를...
더 읽기

golang - 실행 중인 코드의 행 수와 파일 이름 얻기

현재 실행 중인 Go의 코드 정보를 로그를 남기고 싶을 때는 코드의 파일 이름과 행 수를 알아야 한다. runtime.Caller 함수를 사용하면 이 정보들을 얻을 수 있다. package main import ( "runtime" "fmt" ) func main() { // func Caller(skip int) (pc...
더 읽기

golang - channel 사용하기

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. 채널 사용하기 받기 전용, 보내기 전용 채널 선언 받기 전용 c <-chan int 보내기 전용 c chan<- int 다른 고루틴에 동기적으로 통신하고 싶은 경우 2개의 채널이 서로 동기적으로 데이터를 주고...
더 읽기

golang - binary encoding

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. 바이너리 엔코딩 개요 복수의 값과 바이트 열의 상호 교환을 한다 복수의 값은 고정 길이 값으로 해석된다. 고정 길이 값으로 다룰 수 있는 것 수치 타입: int8, uint8, int16, float32, complex64,...
더 읽기

golang - slice의 shuffle

Fisher–Yates shuffle 이라는 알고리즘 사용 package main import ( "fmt" "math/rand" ) func main() { n := 30 arr := generate(n) fmt.Println(arr) shuffle(arr) fmt.Println(arr) } func generate(n int) []string { arr := make([]string, n) for i := range arr {...
더 읽기

golang - webFramework Echo

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. 개요 웹 프레임워크. 경량 고속. 공식 페이지 https://labstack.com/echo 설치 go get github.com/labstack/echo 버전 2부터는 fasthttp 모듈을 선택해서 사용 가능하다. 성능 테스트 예. http://yamamaijp.hatenablog.com/entry/2016/03/10/161831 간단 예제 코드 main.go package main import...
더 읽기

golang - defer

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. defer 테스트 테스트 1: 마지막으로 쓴 것이 가장 뒤에 쓴 것이 제일 처음 호출된다 http://play.golang.org/p/gb8tbGk4wr package main import "fmt" func f() { defer fmt.Println("1") defer fmt.Println("2") defer fmt.Println("3") } func...
더 읽기

golang - 코드 정적 분석 툴 go vet

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. go vet go의 표준 패키지에 포함된 코드 정적 분석 툴이다. 공식 문서는 https://golang.org/cmd/vet/ go vet 사용 방법 ・flag 등 go vet package/path/name # package 단위 go tool vet /path/to/*.go #...
더 읽기

golang - 설치와 GoPath

아래 글은 golang을 공부할 목적으로 웹에서 본 글들을 정리한 것이다. 설치 (일어)Ubuntu에 GO 언어(golang)의 최신 버전을 apt로 설치 (일어)Homebrew로 Go 1.6 설치 (일어)Go 언어 개발환경 셋업 (일어)Go 개발 환경/빌드 환경으로서 Amazon Linux을 셋업하는 절차 (일어)CentOS7에 Go 최신 버전을 설치하기 govirtualenv...
더 읽기