CLOVER🍀

That was when it all began.

Go

Goでのビルド時に使う、-ldflagsフラグと-Xについて調べてみた(go tool link)

Go

これは、なにをしたくて書いたもの? 記事や書籍などで、以下のような記述を見かけます。 $ go build -ldflags '-X main.xxxx=....' この-ldflagsと-Xの指定でプログラム内の値を変えているようなのですが、「変えられます」という情報以外のことを あまり見…

Goのxerrorsパッケージを試す

Go

これは、なにをしたくて書いたもの? Goのエラー処理に関する情報を見ているとxerrorsというものがよく出てくるので、1度見ておこうかなと思いまして。 xerrorsパッケージ xerrorsパッケージは、Goのエラーハンドリングのためのパッケージです。 xerrors · p…

複数バージョンのGoをインストールする

Go

これは、なにをしたくて書いたもの? Goはapt(+PPA)でインストールしているのですが、他のバージョンが使いたくなる時もあったりします。 Ubuntu · golang/go Wiki · GitHub こういう時はどうしたらいいのかな?と思ったのですが、Go自体が複数バージョン…

Goアプリケーションをデバッグしたい

Go

これは、なにをしたくて書いたもの? Goで書かれたアプリケーションをデバッグする方法を、押さえておきたいな、と思いまして。 Goアプリケーションのデバッグ Goのドキュメントでデバッグについて書かれているのは、こちらのページです。 Debugging Go Code…

makeを学んでみる

これは、なにをしたくて書いたもの? Goでのビルドツールは、makeを使うことが多いと聞いたので。 いくつか、Goで書かれた有名なOSSを見てみると、確かにMakefileが置かれています。 https://github.com/prometheus/prometheus/blob/v2.24.1/Makefile https:…

Goのエラーに関するAPIを学ぶ

Go

これは、なにをしたくて書いたもの? Goの本を読んだり、サンプルコードを見ていたりすると、こういうのを目にするのですが。 file, err = os.Create(filename) if err == nil { return } nilかどうかの判定はさておき…。 エラーの中身や種類に踏み込みたい…

Goで定数や関数定義などをパッケージ外からアクセスしたい(エクスポートしたい)場合、名前を大文字で始める必要があるという話

Go

これは、なにをしたくて書いたもの? プログラムを書く時に、Goのソースコードやライブラリのソースコードを見つつ、「これ使ったらいいのかな?」と使おうとすると アクセスできないこととかがあり。 そういえば、Goのスコープ的な話、知らないですね。特に…

Goで変数の型の名前を取得したい

Go

これは、なにをしたくて書いたもの? Goでプログラムを書いていて、「この変数の型はなに?」みたいな時にどうやって型の情報を取得するんでしたっけ?ということで。 今の動機は、デバッグ時とかに型の名前が知りたい、くらいです。 fmtパッケージの%T書式…

Goプロジェクトで使っているモジュールのライセンスを調べたり、集めたりしたい

Go

これは、なにをしたくて書いたもの? こちらのエントリで、Goで書いたアプリケーションに含まれるモジュールなどがわかるだろうか?という確認をしました。 go tool nmコマンドで、Goの実行可能ファイルの定義やシンボルを表示する - CLOVER 次は、使用して…

go tool nmコマンドで、Goの実行可能ファイルの定義やシンボルを表示する

Go

これは、なにをしたくて書いたもの? Goで作ったアプリケーションに含まれるライブラリとかの情報ってわかるのかな?と思って調べてみたのですが、コマンドが あるようです。 go tool nmというコマンドが近い感じですね。 nm - The Go Programming Language …

Go標準のテンプレートエンジンtext/templateを使ってみる

Go

これは、なにをしたくて書いたもの? Goのテンプレートエンジンを調べてみようかなと思ったのですが、標準ライブラリにあるようなので、こちらを試して みることにしました。 Goの標準ライブラリにあるテンプレートエンジン text/templateと、html/template…

GoでEcho Server/Clientを書いてみる

Go

これは、なにをしたくて書いたもの? Goの勉強にということで、Echo Server、Clientを書いてみようかなと。 お題 Goを使って、Echo ServerとClientをそれぞれ書いていきます。 Echo Server 引数でバインドするアドレスとポートを受け取る 指定しない場合は0.…

Goのメソッドのレシーバータイプ(値 or ポインタ)について調べてみる

Go

これは、なにをしたくて書いたもの? Goの勉強をしていて、メソッドのレシーバー定義が2つあって、どういう使い分けをしたらいいのかよくわからなかったので 調べてみることにしました。 2つ、というのは、こういうのと func (p Point) Length() float64 { …

Goで使用する環境変数を表示・変更するgo envコマンド

Go

これは、なにをしたくて書いたもの? Goで使う環境変数を知りたいなと思ったのですが、goコマンドを見ていてenvというコマンドがあるのに気づき。 少し見てみようかな、と。 環境 今回の環境は、こちらです。 $ go version go version go1.15.6 linux/amd64 …

Goのテストライブラリ、testifyのassertとsuiteを試す

Go

これは、なにをしたくて書いたもの? Goにおける、アサーションなどの機能を提供するtestifyというライブラリがあるのを知りまして。 こちらを少し試しておきたいな、と。 testify testifyは、以下の機能を提供するライブラリです。 アサーション モック テ…

go testingを試す

Go

これは、なにをしたくて書いたもの? Goでのテストの書き方を学んでみようかなと。 Goにはテストの仕組みが標準で組み込まれていて、go testコマンドとtestingパッケージを使うみたいです。 testing - The Go Programming Language 環境 今回の環境は、こち…

非VCS環境下で、Goでローカルにあるモジュールを扱う

Go

これは、なにをしたくて書いたもの? Goを使ったプログラムを書いていこうと思うのですが、モジュールに関する情報を全然知らないので、試しながら学んで みようと。 プログラムを書いていたら、パッケージくらいは使うでしょう、と。 なお、ここで試す条件…

Goでディレクトリ内のソースコードを再帰的にフォーマットする

Go

これは、なにをしたくて書いたもの? Goで書いたソースコードを、ディレクトリ内を再帰的にフォーマットしたいということで。 どうも、gofmtとgo fmtを使う場合で違うようです。 今回は、カレントディレクトリ(.)に考えます。 環境 今回の環境は、こちらで…

Ubuntu Linux 20.04 LTSに、Goをインストールする(+Emacs lsp-mode)

Go

これは、なにをしたくて書いたもの? そろそろ、少しずつGoを扱ってみようかなぁと思いまして。 The Go Programming Language 触ったことがないので、今回はとりあえず簡単にインストーとエディタの設定くらいをやります。 環境 今回の環境は、こちらです。U…

負荷テストツールVegetaを試す

Go

これは、なにをしたくて書いたもの? Vegetaという、割と個性的な負荷テストツールがあり、コマンドラインで簡単に使えそうなので試してみようかということで。 GitHub - tsenart/vegeta: HTTP load testing tool and library. It's over 9000! Apache Bench…

Go製Webサーバー、Caddyで遊ぶ

Go

ちょっとした調べ物をしていたら、CaddyというGo製のWebサーバーが便利だということを知りまして。CaddyCADDYで手軽にHTTP/2サーバを立てる - yuw27b’s blogCaddy で HTTP/2 と php-fpm を利用する - Qiita Caddy? Goで実装されたWebサーバーだそうです。Ca…