본문 바로가기

golang37

golang fsnotify를 이용한 폴더/파일 감시 fsnotify package를 이용하기전에 go get -u golang.org/x/sys/... 를 먼저 설치해야합니다. 그 후에 go get github.com/fsnotify/fsnotify 를 설치합니다. 1 2 3 4 5 watcher, err := fsnotify.NewWatcher() if err != nil { log.Fatal(err) } defer func() { _ = watcher.Close() }() cs 위처럼 watcher를 생성하고 defer을 이용하여 나중에 닫아줍니다. 그 후 golang의 os package, ioutil.TempDir, filepath.Join 등을 이용하여 감시하려는 폴더 변수를 생성합니다. 이렇게 생성된 폴더변수를 tempDir이라고 하겠습니다. .. 2021. 5. 14.
go get과 go install (Golang) golang에서 보통 라이브러리를 다운받을 때 go get 명령어를 사용하게 됩니다. 그런데 go에서는 go install 이라는 명령어도 있고 이는 분명 햇갈리게 합니다. 그럼 go get과 go install의 차이는 무엇일까요? go get은 package를 다운로드한 후에 go install을 실행합니다. (이때 -d 옵션을 이용하면 다운로드만 합니다. 즉, 컴파일은 안합니다.) go install은 다운로드된 package를 컴파일합니다. 이를 활용하면 go get으로 어떤 패키지를 다운받고 다운로드된 패키지에 추가적인 설정 등으로 변화를 준다음 go install로 컴파일하는 용도로 사용할 수 있습니다. go get에는 -u 옵션도 있는데 이는 다운로드 받으려는 패키지가 이미 존재한다면 새로운.. 2021. 5. 11.
Goland undefined 오류 해결하기 main.go routes.go 예를 들어 위처럼 두개의 파일이 있고 둘다 같은 package main이라면 routes.go파일에 있는 함수를 main.go에서 import 없이 쓸 수 있습니다. routes.go의 something()이란 함수를 main.go에서 사용했다고 가정해봅시다. Goland에서 main.go를 실행하면 undefined something이란 오류가 나오면서 컴파일이 안될 때가 있습니다. 이를 위한 해결 방법은 jetbrain ide에서 shift키를 2번 누르면 위와 같은 창이 나옵니다. 여기서 run을 검색하고 파란 부분에 "Run Configurations"를 들어가줍니다. 그럼 위와 같은 창이 나오는데 "More Run/Debug" -> "Modify run Confi.. 2021. 4. 26.
./ 경로 사용시 주의점 ./경로는 현재 파일의 디렉토리를 나타냅니다. 예를 들어 .../base/test.html 파일 안에서 ./를 쓴다면 base를 나타내는 것이죠. 위와 같이 폴더 구조가 있다고 가정해보겠습니다. handlers.go 파일안에 아래와 같은 코드가 있습니다. templates 디렉토리안에 layout.gohtml로 끝나는 모든 파일들을 찾아내는 코드입니다. 그런데 handlers.go의 경로는 matcha/pkg/handlers/handlers.go 이므로 ./경로를 쓰게 되면 matcha/pkg/handlers/templates ... 이 되어서 오류가 날 것 같습니다. 그러나 정상 작동합니다. 왜냐하면 결국 handlers.go도 main.go에 import 될 것이고 go run main.go 명령어를.. 2021. 4. 25.