5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Goの初心者がechoを使って、"Hello World"をブラウザに表示するまで

Last updated at Posted at 2020-09-20

目次

  1. goenvをインストール
  2. goをインストール
  3. go moduleを初期化
  4. "Hello World" を表示させるコードを書く
  5. echoをインストール
  6. hello.goを実行し、ブラウザにアクセス

#1. goenvをインストール
goのバージョンを管理するツール
rubyでいうところのrbenv

$ brew install goenv

パスを通す

//現在のシェルを確認
$ echo $SHELL 
> /bin/bash

- bashの場合 .bash_profileにパスを設定
- zshの場合 .zshrcにパスを設定

$ cd ~  // ホームディレクトリに移動

$ ls -a //カレントディレクトリのファイル等を表示

// 私の場合、 シェルがbashなので、 .bash_profileがなければ作成する
$ touch .bash_profile
$ touch .zshrc // 現在のシェルがzshで、 .zshrcファイルがなければこちらのコマンド

//ファイルにパスを追加する

$ vim .bash_profile

//以下を最後の行に追加
export PATH="$HOME/.goenv/bin:$PATH"
eval "$(goenv init -)"

//設定の変更を反映させる
$ source ~/.bash_profile

#2. Goをインストール

// インストールできるバージョンを確認
$ goenv install -l 

// バージョンを指定してインストール
$ goenv install 1.13.1

// インストールできたか確認
$ goenv versions    // 現在使用可能なバージョンが表示される

// インストールしたgoのバージョンを適応する
$ goenv global 1.13.1   //全てのディレクトリで1.13.1バージョンが使える
$ goenv rehash

$ go version  // 現在設定されているバージョンを確

#3. go moduleを初期化する

$ go mod init app

// ディレクトリ構造
go
├── go.mod    //新たに作成される
└── main.go
go.mod
//このファイルはgit mod init コマンドで自動に生成される

module app

go 1.13

require (
	github.com/labstack/echo v3.3.10+incompatible
	github.com/labstack/echo/v4 v4.1.17 // indirect
)

#4. "Hello World" を表示させるコードを書く

ディレクトリとファイルを作成

$ mkdir go
$ cd go
$ touch main.go

ファイルの中身を書く

main.go
package main

import (
    "net/http"
    "github.com/labstack/echo"
)

func main() {
    e := echo.New()
    e.GET("/", func(c echo.Context) error {
        return c.String(http.StatusOK, "Hello World")
    })
    e.Logger.Fatal(e.Start(":1323"))
}

#5. Echoをインストール

$ go get github.com/labstack/echo/v4

#6. main.goを実行

$ go run main.go
go: finding golang.org/x/crypto latest
go: downloading github.com/mattn/go-colorable v0.1.2
go: downloading github.com/mattn/go-isatty v0.0.9
go: downloading github.com/valyala/fasttemplate v1.0.1
...
...
...
   ____    __
  / __/___/ /  ___
 / _// __/ _ \/ _ \
/___/\__/_//_/\___/ v3.3.10-dev
High performance, minimalist Go web framework
https://echo.labstack.com
____________________________________O/_______
                                    O\
⇨ http server started on [::]:1323

// 必要なモジュールがダウンロードされていき、go.sumに依存しているモジュールのファイルツリーのハッシュ値が記録される

//ディレクトリ構造
go
├── go.mod
├── go.sum  // 追加される
├── main  // 追加される
└── main.go

go.sumの中身

go.sum
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
github.com/labstack/echo v3.3.10+incompatible h1:pGRcYk231ExFAyoAjAfD85kQzRJCRI8bbnE7CX5OEgg=
github.com/labstack/echo v3.3.10+incompatible/go.mod h1:0INS7j/VjnFxD4E2wkz67b8cVwCLbBmJyDaka6Cmk1s=
github.com/labstack/echo/v4 v4.1.17 h1:PQIBaRplyRy3OjwILGkPg89JRtH2x5bssi59G2EL3fo=
github.com/labstack/echo/v4 v4.1.17/go.mod h1:Tn2yRQL/UclUalpb5rPdXDevbkJ+lp/2svdyFBg6CHQ=
github.com/labstack/gommon v0.3.0 h1:JEeO0bvc78PKdyHxloTKiF8BD5iGrH8T6MSeGvSgob0=
...
...
...

http://localhost:1323/にアクセスすると"Hello World"と表示される

##もしも、go run main.goで以下のエラーが出てしまったら
すでにポートが使われているプロセスがあるので、そのプロセスを終了させる

   ____    __
  / __/___/ /  ___
 / _// __/ _ \/ _ \
/___/\__/_//_/\___/ v3.3.10-dev
High performance, minimalist Go web framework
https://echo.labstack.com
____________________________________O/_______
                                    O\
{"time":"2020-09-21T04:05:07.089506+09:00","level":"FATAL","prefix":"echo","file":"hello.go","line":"13","message":"listen tcp :1323: bind: address already in use"}
exit status 1

// psコマンドで実行中のプロセスを確認
$ ps
  526 ttys000    0:00.29 -bash
 2974 ttys001    0:00.09 /bin/bash -l
 3636 ttys001    0:00.78 go run main.go

//同じポート番号を使っているであろうプロセスを削除
$ kill -9 3636

#注意点
[GO言語] Depはもう古い GoModulesへ移行しよう

Goの環境設定を調べていると"GOPATHを設定する"記事を結構目にしますが、GOPATHを設定すると色々とエラーが出たのと、もう古いらしいのでGOPATHは設定していません。

#参考
Golangをgoenvを使ってインストールしてみた
【zsh, bash】macでPATHを通す方法 - not found と出てしまったら
よく使う Vim のコマンドまとめ
GolangとEchoでお手軽にAPIサーバを立てる
Go Modules
Address already in use の対処法

以上

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?