자바스크립트를 활성화 해주세요

d054 Gore쓰다가 답답해서 Tour of Go 설치해서 쓴 썰

 ·  ☕ 3 min read

간단히 go 언어 몇 줄만 실행해보고 싶은데, goland를 띄우는 것은 너무 과한 것같고, 그렇다고 vscode 인스턴스를 다른 것을 띄우는 것도 그렇고, 어떤 환경이 좋을까.. 하고 고민했습니다.

특별히 go 언어는 intellisense가 없어도 쓸만한 언어지 않나 싶습니다. 대신에, 다른 언어에서 제공하는 편리한 기능들이 built-in으로 제공되지 않는 것들도 많아서 조금 번거로운 느낌도 함께 있습니다만, trade-off니까 이해하고 넘어갑니다.

dotnet이나 powershell이나 python이나 php나, 간단히 몇 줄의 코드를 실험해 볼 때는 그다지 번거롭지 않습니다만, go 언어 몇 줄만 실행해보고 싶은 경우 마땅한 REPL이 없습니다. 한 동안 gore가 있잖아! 하고 이를 사용했는데, 이게 너무 느린 겁니다.

gore는 adhoc test보다는 빠르지요. 하지만… 느립니다.

gore

https://github.com/motemen/gore

gore는 몇 가지 문제점이 있습니다.

  • 너무 느립니다.
    • 저만 그런가요?
    • 명령어들을 세션에 저장하고 이를 파일로 flush한 후에, go run한 response를 producer-comsumer로 화면에 보이는 로직입니다.
  • 또 한 번 systax에러난 변수를 다시 정의해서 쓰려고 하면, 이미 정의된 변수라고 나옵니다.
    • :clear로 세션을 초기화 할 수 밖에 없습니다.
  • custom type을 정의하는 것은 가능한데, 이 type을 이용한 function은 작성할 수 없습니다.
    • custom type 정의가 main() 함수안에 정의되기 때문입니다.
      • :print해보면 세션에 저장된 코드가 보입니다.

결론은 쓸만한 물건이 아니다. 입니다. 대용품을 찾고 있었는데, 그냥 브라우저로 tour of go 와 playground 에 접속해 사용해 봤습니다

playground standalone

우선 이쪽은 디자인이 이쁘지 않아서 넘겼습니다.

clone해서 go run . 하면 실행되지 않을까 합니다.

tour of go

https://tour.golang.org/welcome/1 는 무료로 제공되는(사용할 수 있는) playground입니다. runtime을 조사해 보면 쓸만합니다.

파일시스템은 보안상 사용할 수 없겠지요. 그러면 http client는 사용할 수 있나 봤습니다.

d054_tour_golang_web.png
저는 dark reader chrome extension을 사용합니다.

코드는 다음과 같습니다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
package main

import (
	"fmt"
	"math/rand"
	"net/http"
	"io/ioutil"
)

func main() {
	res, err := http.Get("http://www.gmo.jp")
	if err != nil {
		println(err)
	}
	defer res.Body.Close()
	body, err := ioutil.ReadAll(res.Body)
	bodyString := string(body)
	println(bodyString)	
}

안됩니다. 그래서 local에서 돌려보았습니다.

tour of go standalone

처음에는 https://tour.golang.org/welcome/3 의 설명대로 go get 한 다음에, tour 커맨드를 프로젝트의 bin에 복사해서 사용하려고 하얐지만, tour 파일을 따로 준비하지않으면 다음과 같은 메시지를 볼 수 있습니다.

C:\gaming-in-go\bin>tour
2021/02/23 15:08:14 Couldn't find tour files: could not find go-tour content; check $GOROOT and $GOPATH

그래서 clone해서 사용합니다.

git clone https://github.com/golang/tour

http client를 사용해 봤습니다.

d054_tour_golang_standalone.png

문제없이 잘 사용되었습니다.

필요하다면, 내부 프로젝트의 패키지를 넣어서 웹으로 공개해 놓으면, 필요한 경우에 간단히 라이브러리를 사용해 볼 수 있는 환경이 제공되지 않을까합니다.

Ref

공유하기

tkim
글쓴이
tkim
Software Engineer