タグ

ブックマーク / zenn.dev/spiegel (4)

  • 単一リポジトリで Workspace モードを試してみる

    単一リポジトリで複数モジュールを扱いたい 週末に SSH 越しに RDBMS サービスにアクセスする Go パッケージをリリースしたのだが このパッケージは3つのモジュールで構成されている。ディレクトリ構造はこんな感じ。 $ tree sshql sshql ├── go.mod ├── go.sum ├── mysqldrv │   ├── go.mod │   └── go.sum └── pgdrv ├── go.mod └── go.sum ちなみに mysqldrv および pgdrv パッケージは親の sshql パッケージに依存している。また mysqldrv と pgdrv の間には関係はない。 UML 図で書くとこんな感じかな。 これら3つのパッケージを別々のモジュールにしたのは,ルートの go.mod ファイルに各ドライバの外部パッケージを混ぜたくなかったから。モジュー

    単一リポジトリで Workspace モードを試してみる
  • PostgreSQL と ORM と Logging と

    少し前に PostgreSQL サービスに Go でアクセスする方法についてちょっとした調べものをした。そのときの作業メモをブログ記事として残そうと思ったのだが,単ページで収まりそうになかったので Zenn の体裁で書き記しておく。体裁は「」だが,中身はただの作業記録である。ちゃんとした解説をご所望の方にはあしからずご了承のほどを。 講釈はいいから動くコードをくれ! という方には多少なりと参考になるかもしれない。

    PostgreSQL と ORM と Logging と
  • Interface 型の使いどころ【Go】

    golangのコンストラクタでinterface型を返すようにする理由」とそこからリンクされている という記事を見て,なかなか面白いけど「理由」としてはイマイチな気がするので,この記事でも少し考えてみる。 ”Accept Interfaces, Return Structs” Go の設計指針として有名な言葉に ”Accept Interfaces, Return Structs” と言うのがある。つまり返り値としては具体的な型を返すけど,格納するインスタンスや関数の引数などは interface 型で受け入れる,というもの。 たとえば 指定したファイルをオープンする オープンしたファイルの内容を全て読み込む という関数をそれぞれ作る場合 func OpenFile(path string) (*os.File, error) { return os.Open(path) } func

    Interface 型の使いどころ【Go】
  • Go のモジュール管理【バージョン 1.17 改訂版】

    Go 1.17 リリースに合わせて【バージョン 1.17 改訂版】とした(2021-08-21) Go 1.18 から追加・変更になった機能について追記した(2022-04-03) Go のモジュールについては自ブログでもよく話題にするのだが,差分情報が多く内容が分散しているため,ここの Zenn でまとめておく。なお,この記事では vendoring 機能については言及しないのであしからず[1]。 用語の整理 まず最初に用語の定義をしておく。 GOPATH モードとモジュール対応モード バージョン 1.11 以降から Go ツールーチェーンは以下の2つのモードのどちらかで動作する。 GOPATH モード (GOPATH mode) : バージョン 1.10 までのモード。標準ライブラリを除く全てのパッケージのコード管理とビルドを環境変数 GOPATH で指定されたディレクトリ下で行う。パ

    Go のモジュール管理【バージョン 1.17 改訂版】
  • 1