node.js 처럼 go mod init 명령을 통해 모듈을 설치할 수 있는 것 같다.
go 1.10은 지원도 끊어졌고 해당 명령어 지원하지 않으니
g0 1.11은 가야 할 것 같다.
[링크 : https://stackoverflow.com/questions/60410729/unknown-subcommand-mod-error-while-running-go-mod-init]
아래껀 천천히 테스트 해봐야겠네..
(우분투 20.04로 가야하나...)
$ go mod init noah.io/ark/rest $ vi main.go package main
import ( "encoding/json" "net/http" )
var users = map[string]*User{}
type User struct { Nickname string `json:"nickname"` Email string `json:"email"` }
func main() { http.HandleFunc("/users", func(wr http.ResponseWriter, r *http.Request) { switch r.Method { case http.MethodGet: // 조회 json.NewEncoder(wr).Encode(users) // 인코딩 case http.MethodPost: // 등록 var user User json.NewDecoder(r.Body).Decode(&user) // 디코딩
users[user.Email] = &user
json.NewEncoder(wr).Encode(user) // 인코딩 } }) http.ListenAndServe(":8080", nil) } |
[링크 : https://woony-sik.tistory.com/m/12]
$ go get github.com/julienschmidt/httprouter $ vi rest.go package main
import ( "fmt" "github.com/julienschmidt/httprouter" "net/http" "log" )
func Index(w http.ResponseWriter, r *http.Request, _ httprouter.Params) { fmt.Fprint(w, "Welcome!\n") }
func Hello(w http.ResponseWriter, r *http.Request, ps httprouter.Params) { fmt.Fprintf(w, "hello, %s!\n", ps.ByName("name")) }
func main() { router := httprouter.New() router.GET("/", Index) router.GET("/hello/:name", Hello)
log.Fatal(http.ListenAndServe(":8080", router)) } |
[링크 : https://okky.kr/article/386116]
+
backport를 깔아주면 된다고는 한다.
$ sudo add-apt-repository ppa:longsleep/golang-backports $ sudo apt-get install software-properties-common $ sudo apt-get update $ sudo apt-get install golang-1.11 |
[링크 : https://www.gophp.io/install-go-1-11-on-ubuntu-18-04/]
추가해보니 1.18까지도 나왔나 보다.
$ sudo add-apt-repository ppa:longsleep/golang-backports Golang 1.8, 1.9, 1.10, 1.11, 1.12, 1.13, 1.14, 1.15, 1.16, 1.17 and 1.18 PPA for Ubuntu 더 많은 정보: https://launchpad.net/~longsleep/+archive/ubuntu/golang-backports [ENTER]을 눌러 진행하거나 Ctrl-c를 눌러 추가하는것을 취소합니다. |
그래도 1.17을 기준으로 설치 되는 듯.
$ sudo apt-get install golang 패키지 목록을 읽는 중입니다... 완료 의존성 트리를 만드는 중입니다 상태 정보를 읽는 중입니다... 완료 다음 패키지가 자동으로 설치되었지만 더 이상 필요하지 않습니다: golang-1.10-go golang-1.10-race-detector-runtime golang-1.10-src golang-1.11-doc golang-1.11-go golang-1.11-race-detector-runtime golang-1.11-src golang-race-detector-runtime Use 'sudo apt autoremove' to remove them. 다음의 추가 패키지가 설치될 것입니다 : golang-1.17 golang-1.17-doc golang-1.17-go golang-1.17-src golang-doc golang-go golang-src 제안하는 패키지: bzr | brz mercurial subversion 다음 새 패키지를 설치할 것입니다: golang golang-1.17 golang-1.17-doc golang-1.17-go golang-1.17-src golang-doc 다음 패키지를 업그레이드할 것입니다: golang-go golang-src 2개 업그레이드, 6개 새로 설치, 0개 제거 및 1개 업그레이드 안 함. 72.0 M바이트 아카이브를 받아야 합니다. 이 작업 후 424 M바이트의 디스크 공간을 더 사용하게 됩니다. |