Go言語勉強メモ
概要
仕事で使用するためGoの勉強メモ
環境
-
OS
- Ubuntu 23.10
- ほか特に書くことない
ゴール
- Ginで適当なWebAPIを作成
- Cobraで適当なアプリを作る
仕事ではGinを使ってAPIを作成するとのことなので最終的にはこれで適当なのを作れるようになるのを目標。
あと上司が「Cobraは良いゾ」とのことなので喫煙所会話でついていけるようにこっちも勉強する。
HelloWorldしてみる
開発環境構築
下記を参考にGoをインストール
$ sudo apt install golang
$ go version
go version go1.21.1 linux/amd64
良さげ!
Helllo World!
同じ記事を参考にHello World
適当な場所でhello.goを作成して下記記入。
package main
import "fmt"
func main() {
fmt.Printf("Hello World!\n")
}
実行する
$ go run hello.go
Hello World!
ウン!良いゾ!
ついでに深堀り
見た感じGo言語のPrintは標準のfmtってパッケージに入ってるっぽい。
調べてみると3種類あり、用途によって使い分けてるんだ。
ふけぇ…(キョムリ)
Cobraを入れてみる
CobraはGo CLIアプリ作成ツールで、なんか凄い早いCLIが作れるそうな。
使用例ではHugo や Kubernetesでも使われてるそうな。すごい!
※ジブラ
とりあえず適当なチュートリアルを参考に手を動かして勉強していく
今回参考にしたのはこちら
インストール
Cobra/Cobra CLIをインストール
こちらのコマンドを実行
$ go get -u github.com/spf13/cobra@latest
go: go.mod file not found in current directory or any parent directory.
'go get' is no longer supported outside a module.
To build and install a command, use 'go install' with a version,
like 'go install example.com/cmd@latest'
For more information, see https://golang.org/doc/go-get-install-deprecation
or run 'go help get' or 'go help install'.
出鼻をくじかれていきなり嫌になる。
下記を参考にすると、先にgo.mod作っておく必要があるそう。
$ go mod init HelloCobra
go: creating new go.mod: module HelloCobra
$ go get -u github.com/spf13/cobra@latest
go: added github.com/inconshreveable/mousetrap v1.1.0
go: added github.com/spf13/cobra v1.8.0
go: added github.com/spf13/pflag v1.0.5
やったか?
続いてCobraCLI
$ go install github.com/spf13/cobra-cli@latest
# 画面出力は省略
# 雛形作成
$ cobra-ci
コマンド 'cobra-ci' が見つかりません。もしかして:
command 'cobra-cli' from deb cobra-cli (1.3.0-3build1)
次を試してみてください: sudo apt install <deb name>
う〜ん、この。
とりあえずGOPATHでディレクトリ特定して中身みるとインストール自体はできてるっぽい
$ go env GOPATH
/home/XXX/go
$ ll /home/XXX/go/bin/
合計 43492
drwxrwxr-x 2 XXX XXX 4096 2月 11 11:35 ./
drwxrwxr-x 4 XXX XXX 4096 2月 11 10:44 ../
-rwxrwxr-x 1 XXX XXX 8791501 2月 11 11:08 cobra-cli*
-rwxrwxr-x 1 XXX XXX 5531963 2月 11 11:35 goimports*
-rwxrwxr-x 1 XXX XXX 30199285 2月 11 11:35 gopls*
パスを通してあげるとコマンドが通った!ヨシ!
$ export PATH="~/go/bin:$PATH"
$ source ~/.bashrc
$ cobra-cli
Cobra is a CLI library for Go that empowers applications.
This application is a tool to generate the needed files
to quickly create a Cobra application.
Usage:
cobra-cli [command]
Available Commands:
add Add a command to a Cobra Application
completion Generate the autocompletion script for the specified shell
help Help about any command
init Initialize a Cobra Application
Flags:
-a, --author string author name for copyright attribution (default "YOUR NAME")
--config string config file (default is $HOME/.cobra.yaml)
-h, --help help for cobra-cli
-l, --license string name of license for the project
--viper use Viper for configuration
Use "cobra-cli [command] --help" for more information about a command.
雛形を作成
$ cobra-cli init --license MIT --viper=false
雛形ファイルがたくさん作られたのでヨシ!
とりあえずこのまま実行してみると雛形に記載されている文章が表示される。
$ go run main.go
A longer description that spans multiple lines and likely contains
examples and usage of using your application. For example:
Cobra is a CLI library for Go that empowers applications.
This application is a tool to generate the needed files
to quickly create a Cobra application.
Ginを触ってみる
一旦CobraはおいておいてGinのセットアップをして簡単なWebアプリを作ってみようと思ったけど、下記のチュートリアル触ってたら特に問題も起こらずスムーズにできてしまったので特に書くことなし。
Docker化してみる
下記を参考にDocker化し、ついでにAirを使ってホットリロードしてみる。
ゴールを決める
そろそろゴールを決めたいのでここから下記のロードマップで最終的にフロントエンドの基本のTodoアプリを作ってみる。
- DB接続できるようにする
- DDD駆動型のディレクトリ構成を考える
- 開発の基本になるテンプレを作成する
- フロントエンドを入れてTodoアプリを作ってみる
DockerにDBを追加
下記を参考にまずは真似をする