golang
概要 サンプル 概要 比較処理を作っている際に reflect.DeepEqual 使っていたんですが、この子、プライベートなフィールドまで比較対象にしてくれるんですね。。 ちょっと、それは必要なかったので、なんかライブラリ無いかなって探してみたら、go-cmp って…
概要 サンプル 参考情報 概要 Goを勉強し始めた人からよく聞く質問がこれなので、ついでにここにメモです。 やり方としては、ビルドイン関数の copy(dst, src) を使います。 golang.org copy関数のシグネチャは以下のようになってます。 func copy(dst, src …
概要 サンプル 概要 よく忘れるのでここにメモ。基本的な事なんですが 2つのスライスを結合する際の newSlice := append(sli1, sli2...) という記法をよく忘れてしまいます。。。 サンプル package slices import ( "github.com/devlights/gomy/output" ) /…
概要 サンプル 参考 関連記事 概要 引き続き、小ネタチャネル関数の続き。( #関連記事 参照) python には、mapというビルドイン関数があります。 こんな感じ。 $ python3 Python 3.7.7 (default, Mar 25 2020, 10:55:55) [GCC 8.3.0] on linux Type "help",…
概要 サンプル 参考 関連記事 概要 引き続き、小ネタチャネル関数の続き。( #関連記事 参照) パイプラインを使って処理する場合、やっぱり C# の Where とか Java の filter みたいなのが欲しいところですね。 てことで、サンプルつくってみました。 サンプ…
概要 サンプル 参考 関連記事 概要 引き続き、小ネタチャネル関数の続き。( #関連記事 参照) 以前の記事で、指定した個数または条件に合致する間、チャネルから要素を取得する Take 関数について書きました。 devlights.hatenablog.com C#のLinqには、これ…
概要 サンプル 参考 関連記事 概要 引き続き、小ネタチャネル関数の続き。( #関連記事 参照) pythonに enumerate という関数があります。 この関数は、指定されたシーケンスを取り出すと同時にインデックスを付与して返してくれます。 こんな感じ。 $ pytho…
概要 サンプル 概要 忘れない内にメモメモ。 知らなかったのですが、GoLandでデバッグ時に DebugString() string というメソッドを用意しておくと デバッガで表示してくれるみたい。 blog.jetbrains.com v2019.2 から追加された機能みたいですね。 試してみ…
概要 サンプル 概要 先日、指定されたワーカー数でファンアウトさせる関数をつくってみました。 devlights.hatenablog.com ついでなので、それを使った型を一つ作ってみました。 処理を書いていると、sync.WaitGroupを頻繁に利用すると思いますが たまに、sy…
概要 キャッシュを消す方法 毎回キャッシュ無視してテスト実行してもらう go test のフラグにどんなのがあるのかを調べる 参考情報 概要 忘れない内にメモメモ。 テストをするために go test を実行していると、たまに以下のようにキャッシュした結果を表示…
概要 サンプル 参考 関連記事 概要 引き続き、小ネタチャネル関数の続き。( #関連記事 参照) 以前にファンインする関数について記事書きました。 devlights.hatenablog.com ついでなので、ファンアウトさせる関数も書いてみました。 サンプル package chans…
概要 サンプル 参考 関連記事 概要 引き続き、小ネタチャネル関数の続き。( #関連記事 参照) たまに処理をするたびに一定時間のインターバルを置いておきたいときがあったりします。 たいてい以下のように書くと思います。 for v := range Take(Repeat(1)) …
概要 サンプル 参考 関連記事 概要 引き続き、小ネタチャネル関数の続き。( #関連記事 参照) チャネルのパイプラインを構築するとき、諸元のデータをスライスとかで持っている場合があると 最初にそれをチャネルに流していく必要があったりします。一個ルー…
概要 サンプル 参考 関連記事 概要 チャネル関数の続き。( #関連記事 参照) 書籍には記載されていないですが、チャネルさんが触ってて面白いので、ネタ的な関数をこれから数回分続けようかなと。 まず、ループする用のチャネルつくる関数です。普通に回した…
概要 サンプル 参考 関連記事 概要 チャネル関数の続き。 あんまり使うことは無さそうですが、せっかく書いたのでメモメモ。 unix系のteeコマンドのように、一つの入力を2つに複製してくれるチャネルを生成する関数。 データを処理しながら、ついでに非同期…
概要 サンプル 参考 関連記事 概要 devlights.hatenablog.com の補足サンプル。 上の記事では、一つのチャネルをOrDone() でラップして処理していましたが 複数の場合のサンプルもついでに追加。 サンプル package ordone import ( "context" "fmt" "runtime…
概要 サンプル 参考 関連記事 概要 チャネル関数の続き。 今回は、Fan-In (ファンイン) パターンで複数のチャネルのシーケンスを一つにまとめて消費していくチャネルを作る関数について。 非同期系の本とか呼んでいると、よくファン・イン(fan-in) とか ファ…
概要 サンプル 参考 関連記事 概要 チャネル関数の続き。 今回は、複数のチャネルのシーケンスを一つにまとめて順に消費していくチャネルを作る関数について。 例えば、3つのファイルを読み込む処理書いていて、それぞれのファイルを読む処理をゴルーチンに…
概要 サンプル 参考 関連記事 概要 チャネル関数の続き。 今回は、終了判定のdoneチャネルと入力データのチャネルのどちらかが閉じたら閉じるチャネルを返す関数について。 Goで、チャネルを使った処理を書くと、とても便利です。例えば、何かのチャネルのデ…
概要 サンプル 参考 関連記事 概要 チャネル関数の続き。 今回は、指定されたチャネルから指定された個数分だけデータを取り出すチャネルを返す関数です。 C# の Enumerable.Take や Enumerable.TakeWhile チックな感じ。 サンプル package chans // Take --…
概要 サンプル 参考 関連記事 概要 チャネル関数の続き。 今回は、指定された値を延々と繰り返してくれるチャネルを返す関数です。C# の Enumerable.Repeat チックな感じ。 サンプル package chans // Repeat -- 指定した値を永遠と繰り返すチャネルを返しま…
概要 サンプル 参考 概要 よく忘れてしまうので、ここにメモメモ。 Go には、他の言語にあるような継承の概念がありませんが、型の組み込みはサポートされています。 (このあたりはよく議論の的みたいですが、個人的には継承は普段あまり使わないので私は不…
概要 サンプル 参考 関連記事 概要 小ネタ。結構便利なので個人的にはよく使っているパターンです。 C#には、複数のタスクをまとめてしまって、その内の全てが完了したら完了扱いにしてくれるタスクを返す Task.WhenAll() というメソッドがあります。 Goの場…
概要 サンプル 参考 概要 小ネタ。結構便利なので個人的にはよく使っているパターンです。 C#には、複数のタスクをまとめてしまって、その内のどれか一つでも完了したら完了扱いにしてくれるタスクを返す Task.WhenAny() というメソッドがあります。 Goの場…
概要 サンプル ついでに C# のサンプル 概要 よくやり方忘れるので、自分用にここにメモ。 WaitGroupの待ち合わせとチャネルのcloseを忘れるとGoにdeadlockって怒られるので注意。 サンプル ディレクトリを再帰的に降りていって出力するサンプル。別に非同期…
概要 準備 サンプル 概要 以下の記事で知りました。感謝 m( )m dave.cheney.net Go1.13のときは、t.Log() すると、テストが完了してから出力されていたのですが Go1.14からは、バッファリングせずに即出力されるようになっているみたいですね。 準備 自分の…
概要 インストール サンプル Shift-JIS EUC-JP 概要 以下、自分用メモです。忘れない内にメモメモ。 現在、ほとんどのファイルが UTF-8 とかになっていることが多いですが それでも、実務とかだと未だに Shift-JIS とか EUC-JP なファイルをよく見ることがあ…
概要 インストール サンプル sync.WaitGroupでエラー伝播 errgroup.Groupでエラー伝播 errgroupでctx.Contextを使ったサンプル errgroupでパイプライン処理 ついでに結果をExcelに出力するサンプル 概要 忘れない内にメモメモ。 複数の非同期処理の完了を待…
概要 サンプル サンプル2 概要 Goでソース書いているとき、たまにループ内でdeferを使いたいときがあります。 何個もファイルを開いていくときとか。 そういうとき、ループ内で defer 書くと、GoLandさんが「ループ内で defer を直接使ってるよ!」って警告…
概要 インターフェースと構造体を定義してみる インターフェースを拡張してみる 構造体のコンストラクタでインタフェース型で返す 複数のインターフェースを実装している場合 概要 Qiitaに以下のとても勉強になる記事がありました。 qiita.com なるほど、、…