タグ

golangに関するskommaのブックマーク (5)

  • Goメモ-200 (static linkedなバイナリを作る)(os/user, net, 静的リンク) - いろいろ備忘録日記

    概要 普通にアプリ作って確認 os/user or net パッケージを使うと? CGO_ENABLED=0 を指定 osusergo, netgo のタグをビルド時に付与 参考情報 概要 以下自分用のメモです。よく忘れるのでここにメモメモ。。。 以下はLinux上での話です。 Goでは、標準ライブラリを使っているだけのアプリケーションであれば、大抵ビルドすると static linked なバイナリになります。 静的リンクされたバイナリってことですね。自分を動かすのに必要なものが自分自身で完結しているバイナリです。 昨今、コンテナで動作させることが多いので、依存しているものが少なくて、シングルバイナリなアプリケーションが求められるときも多いです。 軽くてセキュリティ的にも強いコンテナを作るために、シェルやlibcが入っていないイメージを使うこともあります。 普通にアプリ作って確認 なので

    Goメモ-200 (static linkedなバイナリを作る)(os/user, net, 静的リンク) - いろいろ備忘録日記
    skomma
    skomma 2022/09/21
    Go binary のリンクについて
  • Go の channel 処理パターン集 | Hori Blog

    Hori Blogフリーランスでバックエンドエンジニアとして活動している Ryota Hori のブログです。 最近はテック系記事より雑記ブログ気味。 この記事は Go Advent Calendar 2017 の 1 日目の記事です。 Go の長所に goroutine による非同期処理がありますが、どうしても channel の取り回しで黒魔術化しがちです。少しでも闇を減らしていきたいので、 channel らへんの取り回しについてパターンをまとめました。チートシート的に使えれば嬉しいです。 Go の channel の基礎 入門資料として使いたいので、題に入る前にざっくり基礎を。 定義のパターン channel には capacity という概念があります。 capacity は channel 内でバッファリングしておける容量のことで、 capacity に空きが無い場合は送信側

    Go の channel 処理パターン集 | Hori Blog
  • あなたのGoアプリ/ライブラリのパッケージ構成もっとシンプルでよくない? | フューチャー技術ブログ

    2023.10.5追記: Goチームからプロジェクトの目的に応じたディレクトリ構造についてのドキュメントが公式に公開されています。 https://go.dev/doc/modules/layout Goプロジェクトのフォルダ構成どうしよう、とググると見つかるStandard Go Project Layout。とはいえ、これはかなりコード量を増やしてしまう恐れがありますので、導入する場合のデメリットも考えておく方が良いです。 特に、プログラマーは、最初にみたプログラミング言語のフォルダ構成を親だと思う特性があり、Javaや.NETに影響されるとかなり細かくフォルダを切りたくなったり、package privateなど細かく可視性を制御しようとしたりして、なおかつ「privateのテストってどうすべきなんですか?」とか議論を始めたりもしますが、Go先生によればこれぐらいは1パッケージにフ

    あなたのGoアプリ/ライブラリのパッケージ構成もっとシンプルでよくない? | フューチャー技術ブログ
    skomma
    skomma 2022/02/26
    軽い気持ちで読めるいい記事
  • Goのモジュール・依存パッケージの管理について

    go get とか go mod、go.modファイルのこととか整理しました。 Go ModulesGoGo Modulesという仕組みでモジュールを管理しています。 Go 1.11 からは $GO111MODULE という環境変数が用意され、Go Modulesを使うかどうかの切り替えができるようになりました。この環境変数は on、 off、 auto の3つの値を選択できます。 on…Go Modules を使う (module-aware mode)off…1.11以前にも採用されていた $GOPATH を使う (GOPATH mode)auto… $GOPATH/src 以外の場所にソースコードがあり、かつ go.mod が存在する場合は module-aware mode、そうでない場合は GOPATH modeデフォルトでは auto となっています。Go1.11~1.12と

    Goのモジュール・依存パッケージの管理について
    skomma
    skomma 2020/08/30
    今後のためにメモ
  • Go 言語の値レシーバとポインタレシーバ

    「レシーバ」とはGo 言語はある種のオブジェクト指向プログラミング (OOP) 言語であり、 OOP 言語の慣例通り、メソッドを呼び出される対象のことを「レシーバ」と呼びます。 ちなみになぜ「レシーバ」と呼ぶのかというと、昔の OOP 言語の文脈ではメソッド呼び出しのことを「メッセージの送信」と言い、メソッドを呼び出される側は「メッセージの受信側」だからです。 「値レシーバ」と「ポインタレシーバ」Go 言語では「値」と「ポインタ」が明示的に区別されているため、たとえばある構造体に対してメソッドを定義する場合でも、「値型」に対する定義なのか「ポインタ型」に対する定義なのかはっきりと区別しなければなりません。それぞれについて簡単に説明します。 値レシーバ「値型」に対してメソッド定義されたものが「値レシーバ」です。 Go 言語では構造体は値なので、以下の例では Person という値型に対して

    skomma
    skomma 2018/09/21
    めっちゃくちゃ丁寧だった
  • 1