タグ

goに関するtjmtmmnkのブックマーク (48)

  • 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
    tjmtmmnk
    tjmtmmnk 2020/09/26
  • Go Modules - Qiita

    普段あまり Go を使わない人が仕事で使ってるソースが突然 Go Modules になって困って調べたメモ。 問題の背景 Go では GOPATH という特殊な概念があって、Go のコードはライブラリも含めてすべて $GOPATH/src 以下に置くという約束になっている。そうするとプロジェクトごとにライブラリのバージョンを変えたい場合に困るので、プロジェクト固有のライブラリは $GOPATH/src/プロジェクト/vendor の下に入れても良いことになっている。そうすると go コマンドは vendor 以下を優先して見てくれる。面白い事に、vendor ディレクトリの管理は govendor 等色々なサードパーティツールを使う。 将来の Go 1.12 からこのやり方を改め、$GOPATH/src や vendor は廃止となり Go Modules という物を採用する事になった。現

    Go Modules - Qiita
    tjmtmmnk
    tjmtmmnk 2020/09/26
  • 【解説】開発ライブ実況 #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はDuck typingを採用していると言えるのか、データ構造から詳しく解説してみた - Qiita

    Goのinterfaceは明示的に実装を宣言せず、実装側がinterfaceのシグネチャを満たしているかによって型が決まるDuck typingを採用していると言われています。私は当初このような説明を聞いたときにピンと来ず、むしろそれはTypeScript等に見られるStructural Typingなのでは?と思いました。 しかし実際にデータ構造を調べて見ると、確かにDuck typingであり、かつStructural Typingでもあるという考えに至りました。 これまでなかなかGoのデータ構造に触れる機会がありませんでしたが、調べてみるとこれまで気づかなかった観点がいくつも出てきたのでぜひ紹介したいと思います。 Duck typingについて 今回の主題となる部分ですので、Duck typing(ダックタイピング)についておさらいします。 Duck typingはアナロジーである「

    なぜGoはDuck typingを採用していると言えるのか、データ構造から詳しく解説してみた - Qiita
  • Go言語らしくGoコードを実装するための手法と思想 - かねしんショップ - BOOTH

    書は、実践的なGo言語の開発方法や設計思想を解説したです。対象読者は、Go言語でツールやライブラリの開発経験はあるが、「Go言語らしく実装するにはどのように記述したらいいんだろう」と悩んでいる初級者や中級者の方、Go言語のノウハウが貯まっていないチームを対象としています。 日では、Go言語のはあまり多く出版されておらず、また、「Go言語らしさ」という言葉を考えすぎて悩んでいる人も多いと思います。「Go言語らしさ」を意識している人はGo言語の公式の情報や設計思想から知識を得ていますが、世の中に拡散されている記事では、それらと紐づされてGoのコードを解説しているものは少ないです。Go言語で開発をしている方に「Go言語らしさ」を意識して開発をしてもらうためにはGo言語の設計思想や背景を深く理解することが重要です。書では、この「Go言語らしさ」について深く吟味してGoのコードを解説をして

    Go言語らしくGoコードを実装するための手法と思想 - かねしんショップ - BOOTH
    tjmtmmnk
    tjmtmmnk 2020/07/06
  • Goのパッケージ構成の失敗遍歴と現状確認

    この記事は Gunosy Advent Calendar 2017の5日目の記事です。前回の記事はGunosyのパーソナライズを支える技術 -ワークフロー編-でした。 GoAPIを書くときの問題僕の在籍するGunosyはGoを昔(?)から番採用しておりまして、ノウハウも潤沢に溜まっている企業だと言えます。 しかし、contextの扱いやベストなパッケージ構成、テスト、net/httpでAPIを書くノウハウなどなど、迷うことは多々あります。 これは弊社特有の事情ではなく、Goのサーバーサイドエンジニア全員にとっての問題です。中でも、パッケージ構成をどうすればいいのか(相互参照せずに快適に開発を進められるパッケージ構成とは)を見つけるのは結構難しく、各々のチームにお任せ、という状況です。 今回は上記の問題のうち、パッケージ構成に踏みこんで見たいとおもいます。会社でもよくパッケージ構成をどう

    Goのパッケージ構成の失敗遍歴と現状確認
    tjmtmmnk
    tjmtmmnk 2020/06/18
  • GithubのGo言語プロジェクトにPull Requestを送るときのimport問題

    TL;DR fork元(オリジナル)をgo getしてその中で作業,forkした自分のレポジトリにpushしてPull Requestを送る. 問題 Github上のGo言語のプロジェクトにコミットするとき,cloneの仕方で若干ハマることがある.普通のOSSプロジェクトの場合は,forkしてそれをcloneしてpush,Pull Requestとすればよい.Go言語のプロジェクトでは,同じレポジトリの中でパッケージを分け,それをimportして使ってるものがある.そういう場合にforkしたものをそのままcloneすると,importの参照先がfork元の名前になりハマる. 例えば,github.com/someone/toolがあるとする.このレポジトリはgithub.com/someone/tool/utilsという別パッケージを持っており,mainがそれを使っているとする.つまり以下

    tjmtmmnk
    tjmtmmnk 2020/04/20
  • build-web-application-with-golang/ja/01.3.md at master · astaxie/build-web-application-with-golang

    このコマンドは主にソースコードのコンパイルに用いられます。パッケージのコンパイル作業中、もし必要であれば、同時に関連パッケージもコンパイルすることができます。 もし普通のパッケージであれば、我々が1.2章で書いたmypathパッケージのように、go buildを実行したあと、何のファイルも生成しません。もし$GOPATH/pkgの下に対応するファイルを生成する必要があれば、go installを実行してください。 もしそれがmainパッケージであれば、go buildを実行したあと、カレントディレクトリの下に実行可能ファイルが生成されます。もし$GOPATH/binの下に対応するファイルを生成する必要があれば、go installを実行するか、go build -o パス/a.exeを実行してください。 もしあるプロジェクトディレクトリに複数のファイルがある場合で、単一のファイルのみコンパ

    build-web-application-with-golang/ja/01.3.md at master · astaxie/build-web-application-with-golang