タグ

Goに関するegapoolのブックマーク (31)

  • Go 1.13 に向けて知っておきたい Go Modules とそれを取り巻くエコシステム - blog.syfm

    はじめに 今年の 8 月にリリースが予定されている Go 1.13 では、Go 1.11 で導入された Go modules に加え、Go module proxy といった新しいエコシステムが登場します。 そこで、そもそも Go modules は何を行っているのかや、何ができるのか、どういった要素で構成されているのかを紹介します。 また、古い Go バージョンから Go 1.13 へアップデートする場合や、 dep や Glide といったベンダリングツールから Go modules へ移行する際の懸念点も併せて紹介します。 先日発表した "Go Modules and Proxy Walkthrough" はこのポストがベースになっています。 TL;DR な人はスライドを見るのがおすすめです。 speakerdeck.com Go Modules Go modules という仕組みは

    Go 1.13 に向けて知っておきたい Go Modules とそれを取り巻くエコシステム - blog.syfm
  • GoでWebアプリ開発時にあるあるだったレビューコメント | フューチャー技術ブログ

    The Gopher character is based on the Go mascot designed by Renée French. はじめにTIG DXユニット 1の真野です。 コードレビューについては3,4年ほど前に、コードレビューにおけるレビュアー側のアンチパターン って記事を書いたりもしました。当時はレビュアーの伝え方って大事だよなって話をしてました。いつしかレビュイーからレビュアーに比重が変わることが増えてきました。相互レビューは当たり前にしていますがが、比較的こうしたらもっと良くなるんじゃないかな? と提案される回数より、自分が提案する回数の方が増えてくるタイミングってありますよね? そういうわけで、最近Goで主にバックエンドのWeb APIや、AWS Lambdaで動くETLアプリ、たまにCLIツールを開発する時に、2回以上同じ指摘したコメントをまとめてます。Go

    GoでWebアプリ開発時にあるあるだったレビューコメント | フューチャー技術ブログ
    egapool
    egapool 2021/01/27
  • 【解説】開発ライブ実況 #1 (Vim / Go) 編 by メルペイ Architect チーム Backend エンジニア #mercari_codecast | メルカリエンジニアリング

    【解説】開発ライブ実況 #1 (Vim / Go) 編 by メルペイ Architect チーム Backend エンジニア #mercari_codecast Merpay Architect / Mercari Microservices Platform チームの伊藤です。この記事は Merpay Tech Openness Month の3日目の投稿となります。稿では、先日開催した開発ライブ実況のイベントで紹介した筆者の開発環境(Vim / Go)について、言語に依存しない「全般的な設定」と「Goの設定」の2つに大別して解説します。Vim に関する話題が多いですが、Go のために自作したツールについての解説はエディタに依存しないので、他のエディタを利用している方々もぜひご一読ください。 開発ライブ実況とは 「他人の開発風景を覗いてみよう!」というコンセプトのもとに弊社が開催して

    【解説】開発ライブ実況 #1 (Vim / Go) 編 by メルペイ Architect チーム Backend エンジニア #mercari_codecast | メルカリエンジニアリング
  • Go Slice Tricks Cheat Sheet

    Web site created using create-react-app

    Go Slice Tricks Cheat Sheet
    egapool
    egapool 2021/01/13
  • vim-goを使わず、LSP(gopls)を使ってVimのGo開発環境を構築する - My External Storage

    2020年にもなったので、vim-goを卒業して、vim-lsp(gopls)を使ったVimの開発環境を構築する。 TL;DR vim-goを卒業してgoplsとvim-lspを使った開発環境を構築する VimでLSP(とその他プラグイン)を使えば以下のことができる リアルタイムで静的解析の結果をエディタ上に反映する ポップアップで静的解析のエラーを表示する ポップアップで関数定義などのコメントを表示する 定義元へジャンプができる。 package名.などを入力IDEのような補完候補が表示さえる funcと入力してタブを押下するとスニペットが展開される。 &http.Client{}と書いたあと:LspCodeActionで構造体のフィールドをゼロ値で初期化する importをよしなに解決する(goimport) :wによる自動ソースコード整形、およびそのエラー表示 Vim上からテストを実

    vim-goを使わず、LSP(gopls)を使ってVimのGo開発環境を構築する - My External Storage
  • Go 脱初心者への道

    最近、 Go の学習を始めました。入門書や 公式のチュートリアル を終えてもなかなか解らないことをまとめてみました。 1. パッケージ作成・パッケージ管理 1. a. ディレクトリ構成は非公式ながら標準と目されるものがある(らしい) Standard Go Project Layout /cmd にmainのアプリケーションのソースを置きます。 /pkg にライブラリのソースを置きます。 /src にソースを置いてはいけません。 なお、このディレクトリ構成は go コマンド(go build 等)がデフォルトで認識するディレクトリ (/src , /pkg , /bin) とは全く異なるので注意が必要です。 2021-05-24 追記 このレイアウトは殆ど普及していないとのこと。また、リポジトリ名が「標準」を名乗るのは誤解を招くとのissueも挙がっています。 個人的な意見として、ライブラ

    Go 脱初心者への道
    egapool
    egapool 2020/10/20
  • とほほのGo言語入門 - とほほのWWW入門

    概要 Go言語とは バージョン インストール Hello world Print・Println・Printf 変数(var) 定数(const) コメント 行末のセミコロン キーワード 演算子 型(type) 型変換 リテラル・値 エスケープシーケンス 配列(array) スライス(slice) マップ(map) 制御構文 If文(if) Switch文(switch) For文(for) Goto文(goto) 関数(func) 構造体(struct) インタフェース(interface) interface {}型 ポインタ(pointer) 領域確保(new) 遅延実行(defer) インポート(import) モジュール(module) パッケージ(package) ワークスペース(workspace) ゴルーチン(Goroutine) リンク 概要 Go言語とは Google

  • Goのテストに入門してみよう! | フューチャー技術ブログ

    2020/08/15更新: 「テストの失敗をレポートしたい」と「サブテストの一部のみ実施したい」の章を追加 はじめにTIG の辻です。今回は春の入門祭りということで Go のテストに入門してみよう! という記事です。 書いた背景ですが Go の標準ライブラリのコードリーディング会で testing パッケージにチャレンジしてみましたが、難しすぎてわからん。そもそも Go のテストって何ができるんだっけ? という話になり、基的な内容をなるべく具体例をまじえながらまとめました。 ざっとどんなことができるんだろう、という index になれば幸いです。 TipsGo に組み込まれているテストの仕組みの中に、ベンチマークに関するテストと Example テストというサンプルコード用のテストも含まれているのですが、この 2 つは対象外にします。基礎的と思われる内容から順に並べてみました。 はじめに

    Goのテストに入門してみよう! | フューチャー技術ブログ
  • vim-goからvim-lspへ移行しました - Carpe Diem

    概要 vim-goからvim-lspへ移行する時に問題になってたところを全部mattnさんが解決してくださってたのでようやく完全移行したという話です。 環境 vim 8.2 go 1.13.5 これまでの課題 vim-goの問題点 2014年からgoを触っていましたが当時はvim-go一択で、しかもやりたいことはそれだけで事足りていました。 しかし時代は流れ、以下のように少しずつモヤモヤを感じるようになってきました。 1.10のビルドキャッシュ辺りでバグがちょこちょこ起きたり 機能が増えてきて重くなったり Language Server Protocolの機運が高まってきた(色んなエディタやIDEが対応してきた) vim-lspの問題点 vim-lsp自体はLanguage Server Protocolが話題に挙がった頃から何度か試してみたのですが、 初期はサポートしている機能が限定され

    vim-goからvim-lspへ移行しました - Carpe Diem
  • Big Sky :: gocode やめます(そして Language Server へ)

    はじめに まず始めに言っておかなければなりません。 gocode 今まで当にありがとう この記事は、Go 言語歴10年になる僕がこれまで愛用してきた Go 言語のコード補完ソフトウェア gocode の歴史と功績、そして今、gocode 自らがその役割を終えようとしている姿をぜひ皆さんに知って頂きたいという思いから Go Advent Calendar 2018 の記事として起こしました。この記事では gocode が歩んできた歴史と苦悩を少しでも皆さんに分かる様に解説させて頂きつつ、そして次にやってくる Go 言語のコード補完の未来についてご紹介したいと思います。Vim について多めに書かれていますが、Visual Studio Code での Go 開発にも影響する話です。 gocode とは gocode は nsf 氏が開発した Go 言語のコード補完サーバです。 GitHub

    Big Sky :: gocode やめます(そして Language Server へ)
  • あなたのGoアプリ/ライブラリのパッケージ構成もっとシンプルでよくない? | フューチャー技術ブログ

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

    あなたのGoアプリ/ライブラリのパッケージ構成もっとシンプルでよくない? | フューチャー技術ブログ
  • Goならわかるシステムプログラミング

    Goで始める、すこし低レイヤのプログラミング入門。入出力、ネットワーク、メモリなど、現実の世界でプログラムが動くために必要な機能をプログラム言語Goを通して覗いてみよう。OSの機能とは何か、それをプログラミングでどう利用するのか、システムプログラミングの世界をプログラマの視点から眺めていく連載企画。 2017年06月21日 17時00分 プログラミング+ Go言語によるプログラマー視点のシステムプログラミング 第20回 Go言語とコンテナ 連載の最終回。この連載ではプログラムがコンピュータ上で動くときに何が起きているのかをGo言語のコードを通して覗いてきました。今回はその締めくくりとしてコンテナについて紹介します。 2017年06月07日 21時30分 プログラミング+ Go言語によるプログラマー視点のシステムプログラミング 第19回 Go言語のメモリ管理 ソフトウェアにとってメモリは不

    Goならわかるシステムプログラミング
    egapool
    egapool 2020/05/26
  • Go で書いた CLI ツールのリリースは GoReleaser と GitHub Actions で個人的には決まり - tellme.tokyo

    Go で書いた CLI ツールのリリースは GoReleaser と GitHub Actions で個人的には決まり February 4, 2020 lt;dr GoReleaser と GitHub Actions を使うと簡単にビルドしたバイナリを作ってアップロードできる。 2つの YAML を書いてリポジトリにコミットする .github/workflows/release.yml .goreleaser.yml git tag して push する バイナリがリリースされる 専用のツールをローカルにインストールする必要はない。 題 前に、Go のコマンドラインツールを簡単にリリースする | tellme.tokyo というブログを書いた。 それよりももっと楽になったので紹介する。 基的にこのページで紹介する方法では 2 つの YAML をリポジトリに置くだけで終わる。 ロー

    Go で書いた CLI ツールのリリースは GoReleaser と GitHub Actions で個人的には決まり - tellme.tokyo
    egapool
    egapool 2020/02/04
  • Go の命名規則 | micnncim

    記事は Go Advent Calendar 2019 11 日目の記事です。 Go はシンプルな言語機能・シンタックスが特徴であり、命名規則にもそのシンプルさが表れています。 記事では、公式や著名な Go エンジニア、OSS などから見られる Go らしい命名規則を紹介します。 今更なテーマかもしれませんが、意外にも公私共々で命名規則が意識されていないコードを時折見かけるので、自戒も込めて記します。 誤った内容があれば Twitter でご指摘いただければと思います。 パッケージ名簡潔にするEffective Go では、short, concise, evocative なパッケージ名が望ましいとされます。 これはパッケージ名に限らずほとんどあらゆる命名において役立つ指針だと思います。 また、「パッケージ名は一言で何をするかを表すエレベーターピッチだ」という Dave Cheney

    Go の命名規則 | micnncim
  • Goを始めて1年間で最高にお世話になったGo関連ブックマークを晒します。 - Qiita

    自分は普段はChromeのブックマークを使ってよく見返す記事を保存しています。Goを一年間書いてきてブックマークを整理したのですが、せっかくなのでお世話になったブックマーク記事を晒します。 Blog & Serial The Go Blog Goの公式ブログ。深いところまでしっかり書かれているので、調べたいトピックはまずはここで調べたい。 https://blog.golang.org/ Practical Go GoのcontributorであるDave Cheneyさんのブログです。Goで開発&運用する上でのアドバイスが書かれており、入門記事だけでは得られないノウハウがふんだんにまとめられています。 https://dave.cheney.net/practical-go Goならわかるシステムプログラミング @shibukawaさんの連載です。Go低レイヤーを学んでいきます。根底の

    Goを始めて1年間で最高にお世話になったGo関連ブックマークを晒します。 - Qiita
    egapool
    egapool 2019/10/11
  • How To Use Go Interfaces

    I occasionally give free Go consults and code review on top of my daily work. As such, I tend to read a lot of other peoples’ codes. And while this is really more of a feeling *Now, you should go, really? You're a statistician by training ffs, I’ve seen an increase in what I call “Java-style” interface usage. This blog post is a Go specific recommendation from me, based on my experiences writing G

  • Go 言語の値レシーバとポインタレシーバ

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

  • Go言語記事〜超まとめ〜 - My Favorite Life

    先日書いたこちらの記事 abemotion.hatenablog.com ホッテントリ入りし、ブックマーク数も80を超えた。 やっぱりフィードバックがあると嬉しいですね。当に感謝...! 今日は上記でも触れた、手元でブクマしているGo言語関係の記事を、 自分の中での整理も兼ねて、まとめます。 ※ あくまで自分にとっての「超まとめ」なので、全て網羅しているわけでなく、 足りない所などあるかと思います。どなたかの参考になれば幸いです。 入門 Go入門 Go For Perl Mongers - YAPC::Asia Tokyo 2014 実践Go言語 - golang.jp Go言語を学び始める人へ ~2017冬~ – All YoU Need Is D* 「Go言語らしさ」とは何か? Simplicityの哲学を理解し、Go Wayに沿った開発を進めることの良さ - エンジニアHub|若手

    Go言語記事〜超まとめ〜 - My Favorite Life
  • Big Sky :: Go のポインタの躓きやすい点

    Go は最近のプログラミング言語にしては珍しくポインタを扱えるプログラミング言語。とはいってもC言語よりも簡単で、オブジェクトの初期化やメソッドの定義以外の場所ではおおよそポインタを使っている様には見えない。メソッドやフィールドへのアクセスも . で出来るし Duck Type によりインタフェースを満たしていれば実体であろうとポインタであろうとそれほど意識する必要はない。ところがこの便利さに乗っかってしまうと思わぬ所で足をすくわれてしまう。 package main type foo struct { v int } func (f foo) add(v int) { f.v = v } func main() { var a foo a.add(3) println(a.v) } このコードは 0 が表示される。メソッドを呼び出す際にはレシーバのオブジェクトを得る必要があるが、foo

    Big Sky :: Go のポインタの躓きやすい点
  • Goのpackage構成と開発のベタープラクティス

    (images: github.com/egonelbre/gophers) こんにちは。 データエンジニアリンググループ(CETチーム)の寺下です。 自分の所属するCETチームでは今まで主にScalaPythonなどを使ってAPIや基盤を実装してきましたが、最近では徐々にGoによる実装も増えてきており、GAE/GKE上で番運用を行っています。 記事ではGoのプロダクトにおいてDDDライクなpackage構成で実装する際の注意点や、汎用的に通用するであろう実装のTipsについて書いていきます。 記事で紹介する例がベストプラクティスだというわけではありませんので、あくまで実装の一例程度に捉えて頂けると幸いです。 Goのアーキテクチャ Goは言語仕様がシンプルかつフォーマッタが強力なため、syntaxレベルでは開発者によってコードの品質がブレにくいというメリットがあります。 しかしなが

    Goのpackage構成と開発のベタープラクティス