いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

golang

Goメモ-203 (Goで非同期処理する際のガイドブック的な資料, go-concurrency-guide)

概要 参考情報 概要 とても勉強になるリポジトリを見つけたので、忘れない内にメモメモ。。。 書籍 「Go言語による並行処理」、「プログラミング言語Go」のサンプルを元にして作ったと説明されていますね。 github.com 参考情報 本ブログでもGoの非同期処理…

Goメモ-202 (type alias と defined type の違い)

概要 概要 結構、周りから違いが分からないと聞かれることが多いので、ここにメモメモ。。。 実際に見たほうがわかりやすいと思いますので、以下にサンプルを。 package types import ( "strings" "github.com/devlights/gomy/output" ) type typeAlias = st…

Goメモ-201 (無償で読めるGoの電子書籍 (softchris/golang-book))

概要 概要 以下自分用のメモです。忘れないうちにここにメモメモ。。。 まだ、読めていないのですが Go 1.17 と結構最近のバージョンを対象としてくれているので助かりますね。 基本的な言語機能からスタートしているので、Tour of Go をやった後とかに読む…

Goメモ-200 (static linkedなバイナリを作る)(os/user, net, 静的リンク)

概要 普通にアプリ作って確認 os/user or net パッケージを使うと? CGO_ENABLED=0 を指定 osusergo, netgo のタグをビルド時に付与 参考情報 概要 以下自分用のメモです。よく忘れるのでここにメモメモ。。。 以下はLinux上での話です。 Goでは、標準ライブ…

Goメモ-199 (*exec.Cmd 実行時にコマンドの引数指定にスライスを使う)

概要 サンプル 参考情報 概要 以下自分用のメモです。よく忘れるのでここにメモメモ。。。 別に (*exec.Cmd) 専用でもなんでもないのですが、コマンド引数を指定する際に引数のリストをスライスで持っている場合、go の three dot (...) の機能を使って、そ…

Goメモ-198 (*exec.Cmd 実行時にワーキングディレクトリを指定する)

概要 サンプル 参考情報 概要 以下自分用のメモです。よく忘れるのでここにメモメモ。。。 外部コマンド実行時に特定のディレクトリをワーキングディレクトリにして開始したい場合があります。 その場合は (*exec.Cmd).Dir に値を設定することで可能となりま…

Goメモ-197 (*exec.Cmd 実行時に追加の環境変数を渡す)

概要 サンプル 参考情報 概要 以下自分用のメモです。よく忘れるのでここにメモメモ。。。 外部コマンド実行時に追加の環境変数を指定したい場合がたまにあります。 その場合は (*exec.Cmd).Env に値を追加したスライスを再設定することで可能となります。 …

git pull した後にファイルの日付をコミット時のものに変更する

概要 サンプル 概要 たまーに必要になるときがあるので、ここにメモメモ。。。 gitとかの最近のソース管理ソフトウェアは、「コミット時の日付」を復元してくれません。pullするとその時点の日付でファイルが作成されます。(当たり前ですが) SVNではオプシ…

Goメモ-196 (strconvパッケージ Tips)(2進数文字列から16進数文字列へ変換)

概要 サンプル 参考情報 概要 以下自分用のメモです。よく忘れるのでここにメモメモ。。。 サンプル package strconvs import ( "strconv" "github.com/devlights/gomy/output" ) // BinToHex -- 2進数文字列から16進数文字列へ変換するサンプルです。 func …

Goメモ-195 (strconvパッケージ Tips)(16進数文字列から2進数文字列へ変換)

概要 サンプル 参考情報 概要 以下自分用のメモです。よく忘れるのでここにメモメモ。。。 サンプル package strconvs import ( "strconv" "github.com/devlights/gomy/output" ) // HexToBin -- 16進数から2進数文字列へ変換するサンプルです。 func HexToB…

Goメモ-194 (strconvパッケージ Tips)(2進数文字列から10進数へ変換)

概要 サンプル 参考情報 概要 以下自分用のメモです。よく忘れるのでここにメモメモ。。。 サンプル package strconvs import ( "strconv" "github.com/devlights/gomy/output" ) // BinToDec -- 2進数文字列を10進数に変換するサンプルです. // // REFERENC…

Goメモ-193 (strconvパッケージ Tips)(16進数文字列から10進数へ変換)

概要 サンプル 参考情報 概要 以下自分用のメモです。よく忘れるのでここにメモメモ。。。 サンプル package strconvs import ( "strconv" "github.com/devlights/gomy/output" ) // HexToDec -- 16進数文字列を10進数に変換するサンプルです. func HexToDec…

Goメモ-192 (strconvパッケージ Tips)(ParseInt の第2引数 base について)

概要 サンプル 参考情報 概要 以下自分用のメモです。よく忘れるのでここにメモメモ。。。 strconvパッケージに、 ParseInt という関数がありまして、多分大抵の人が利用したことがあると思います。 この ParseInt 関数さん、引数が3つとなっていて、一つ目…

Goメモ-191 (strconvパッケージ Tips)(ParseInt の第3引数 bitSize について)

概要 サンプル 参考情報 概要 以下自分用のメモです。よく忘れるのでここにメモメモ。。。 strconvパッケージに、 ParseInt という関数がありまして、多分大抵の人が利用したことがあると思います。 この ParseInt 関数さん、引数が3つとなっていて、一つ目…

Goメモ-190 (Scanner を使った処理でのパフォーマンスTips)

概要 参考情報 概要 タイトルには Scanner とか書いているのですが、別段Scanner限定な訳ではないです。 bufio.Scanner 便利ですよねー。これ使ってファイルI/Oしている方多いと思います。 基本的にGoは処理速度が速いので、あまり気にならないと思いますが …

Goメモ-189 (GoでJavaVMみたいにSIGQUITでスレッドダンプを採取できるようにする)

概要 サンプル 参考情報 概要 以下は自分用のメモです。よく忘れるので、ここにメモメモ。。 常に必要じゃないんですが、たまにシグナルをちゃんとトラップしていろいろ動いてくれるアプリを作るときがあります。 そんなときに、JavaVMみたいにSIGQUIT受けた…

Goメモ-188 (go.mod の バージョンを go 1.18 に変更する)

概要 元の go.mod Go 1.18 をダウンロードしてインストール go.mod を 1.18 にバージョンアップ 概要 以下は自分用のメモです。よく忘れるので、ここにメモメモ。。 先日、Go 1.18 がリリースされました。 devlights.hatenablog.com ちょっと試してみようと…

Goメモ-187 (os.Mkdir() などで指定するパーミッションについて)(os.ModePerm, 0777)

概要 サンプル 参考情報 概要 以下は自分用のメモです。よく忘れるので、ここにメモメモ。。 Goで、ディレクトリを作成したりする際に os.Mkdir() とか os.MkdirAll() を使うと思いますが この関数には、引数でパーミッションを渡すことになります。 で、通…

Goメモ-186 (forループで2つの変数を定義して使う)

概要 参考情報 概要 以下は自分用のメモです。よく忘れるので、ここにメモメモ。。 Goでたまに for ループで 2つの変数を定義してループさせたいときがあります。 他の言語だと、例えばこんな感じ。 for (int i = s.Length-1, j = 0; i >= 0; i--, j++) { } …

Goメモ-185 (Go 1.18 リリース)(Generics, Fuzzing, Workspaces mode)

概要 本家の情報 動画 その他テックブログなど 概要 ついに Go 1.18 が 先日(2022-03-16)リリースされましたね。 いきなり全ての環境が Go 1.18 に変わることはないので、個人的にはのんびり勉強していくつもりです。 とりあえず、忘れないうちに情報をメ…

Goメモ-184 (Goで http GET と POST のリクエストの発行)

概要 Getリクエスト POSTリクエスト 概要 以下は自分用のメモです。よく忘れるので、ここにメモメモ。。 Getリクエスト // // http.Get() を使って HTTP GET リクエストを試してみるサンプルです。 // // リクエストの発行先は JSONPlaceholder (https://jso…

Goメモ-183 (Goで実行時に型を知るためのやり方メモ)

概要 サンプル 参考情報 概要 以下は自分用のメモです。よく忘れるので、ここにメモメモ。。 Goで実行時に型を動的に知りたいというのは、個人的にあまり出番がないのですが、必要なときもあります。 サンプル package reflects import ( "errors" "fmt" "re…

Goメモ-182 (Goの情報が沢山公開されているサイト)

概要 概要 以下は自分用のメモです。 Goの情報を探すときに、よく利用しているサイトの一覧です。 有名どころばっかりですが。 以下、順不同。 Tour of Go -- go.dev https://go.dev/tour/welcome/1 基本中の基本。今でもたまーに確認したりしてます。 Go Ch…

Goメモ-181 (Effective Goに「今後更新する予定はありません (There are no plans to update it)」の補足が追加されている)

概要 参考情報 概要 久しぶりにEffective Goを参照しようとしていたら、以下の1文を発見。 Note added January, 2022: This document was written for Go's release in 2009, and has not been updated significantly since. Although it is a good guide t…

Goメモ-180 (Goの歴史についてまとめてあるサイト) (golang.design, Go: A Documentary)

概要 参考情報 概要 とてもきっちり纏められているので、忘れないうちにメモメモ。。 golang.design Goの歴史の始まりから今に至るまでの歴史が見れます。分量がすごいです。 DeepLなどのおかげで、英語だろうと中国語だろうと普通に読めるのは本当にいい時…

Goメモ-179 (スタックトレースを取得するやり方メモ)

概要 debug.PrintStack() debug.Stack() runtime.Stack() pprof.Lookup("goroutine").WriteTo() 参考情報 概要 よく忘れるので、ここにメモメモ。。。 たまにスタックトレースを取りたいときがあったりします。 Goだと debug.PrintStack() とか debug.Stack(…

Goメモ-178 (go test で使うテストデータは testdata ディレクトリに置く)

概要 参考情報 概要 情けないことに知らなかったので、忘れないうちにここにメモメモ。。。 テストするときに使うデータの置き場所っていつも data とか 適当な名前で管理していたりしたのですが go test の説明の部分に以下の記載があることを知りました。 …

Goで作られたタスクランナー (makeの代わりに, go-task/task, Taskfile.yml)

概要 サンプル 概要 名前が一般的すぎて、よくURLとか探すのに苦労するので、忘れないようここにメモメモ。。。 taskfile.dev github.com Goで作られたタスクランナーです。Makeが入っていない環境(Windowsとか)でも使えるので何気に重宝しています。 各OS…

Goメモ-177 (リリース前の機能も含めて最新のGoを試す)(gotip, gccない環境でインストール)

概要 Cコンパイラが無い環境でCGO_ENABLED=1だとインストールに失敗する 参考情報 概要 Goは複数のバージョンをインストールして遊ぶことがとても簡単な言語です。 基本、一つのバージョンのGoをインストールしてしまえば、後は Twitter の Goアカウントがよ…

Goメモ-176 (ジェネリックのメモ)(go1.18, Generic)

概要 自分用のメモ 参考情報 概要 Go 1.18 のドラフトリリースノートを見ると Go 1.18 is not yet released. These are work-in-progress release notes. Go 1.18 is expected to be released in February 2022. となっているので、そろそろ近づいてきました…