タグ

golangに関するthondaのブックマーク (16)

  • 「プログラミング言語Go完全入門」の「完全」公開のお知らせ | メルカリエンジニアリング

    メルペイ エキスパートチームの@tenntennです。稿は Merpay Tech Openness Month の11日目の記事です。 「プログラミング言語Go完全入門」の期間限定公開のお知らせでも書いたように、メルペイでは、社外の方向けにGopher道場という体系的にGoを学べる場を無償で提供してきました。Goの普及を目的にこれまでに8回開催し100人以上の方に参加していただきました。 また、Gopher道場の動画や資料はGopher道場 自習室として誰でも利用できるようになっており、現時点で300名以上の方が利用されています。 Gopher道場の資料のベースになっている「プログラミング言語Go完全入門」は、2020年7月31日までの限定公開になっていましたが、日より公開期限を撤廃し、完全公開することになりました。 また、日8月31日から始まる「Online Summer Int

    「プログラミング言語Go完全入門」の「完全」公開のお知らせ | メルカリエンジニアリング
  • 「プログラミング言語Go完全入門」の期間限定公開のお知らせ | メルカリエンジニアリング

    メルペイ エキスパートチームの@tenntennです。 メルペイでは、社外の方向けにGopher道場という体系的にGoを学べる場を無償で提供してきました。Goの普及を目的にこれまでに7回開催し100人以上の方に参加していただきました。 自社でもGoを基幹技術として使っている背景があり、今後もGoコミュニティへの貢献は継続していきます。しかしながら、新型コロナウイルス感染症の状況を踏まえて直近のGopher道場開催を見合わせています。 Goを学ぶ場を提供することでGoに触れる方を増やしたいと考えている筆者にとっては、 開催できないことが非常に残念です。そこでエキスパートチームでは違う形で学ぶ場を提供できないかと考え、Gopher道場で使用している資料のベースになっている「プログラミング言語Go完全入門」を期間限定で公開することにしました。 bit.ly bit.ly 追記 3/18:PDF

    「プログラミング言語Go完全入門」の期間限定公開のお知らせ | メルカリエンジニアリング
  • Goのforとgoroutineでやりがちなミスとたった一つの冴えたgo vetと - Qiita

    分かっていたつもりなのにまたやってしまったので、自戒を込めて書いておきます。 forループ内でgoroutineを使う場合の注意点 for内でgoroutineを実行する際にやりがちなミスがあります。 以下のコードを見てください。 package main import ( "fmt" "time" ) func main() { values := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9} for _, val := range values { go func() { fmt.Println(val) }() } // goroutineが終了するまで待つ。 // コード簡素化のためにsleepしているだけだが、 // 来はsync.WaitGroupとかchannel使うなど適切な処理をすべき。 time.Sleep(1 * time.Second)

    Goのforとgoroutineでやりがちなミスとたった一つの冴えたgo vetと - Qiita
  • 【Go言語】ループ内でのgoroutine生成の潜在的なエンバグポイントについて - DRYな備忘録

    1番、よくやるやつ(やばめ) for _, user := range users { go func() { user.SomeHeavy() }() } 非同期で生成されるクロージャの中で、参照されるuserはループ内スコープのそれなので、たとえばループのn番目とn+1番目の処理において、同じn+1番目のユーザに重複してSomeHeavy()を実行してしまう危険性がある。ぜんぜん閉包じゃない。今回の主題は、この潜在的なエンバグポイントを、どうすれば事前に防げるか、防げるコーディング規約があるか、みたいな興味。 2番、よくやるやつ(だいたい) for _, user := range users { go func(u *User) { u.SomeHeavy() }(user) } ちゃんとクロージャ内でのスコープとなるように渡す。これなら1番の問題は起きない。 そもそも、1番のように

    【Go言語】ループ内でのgoroutine生成の潜在的なエンバグポイントについて - DRYな備忘録
  • Goルーチンで並行化する方法: 6秒かかる処理を3秒にしよう - Qiita

    まず直列実行するプログラムを書く 1秒待つコマンド 2秒待つコマンド 3秒待つコマンド 上記を順番に実行していくプログラムを main.go の中身を書く。 つまり、合計で6秒かかってしまう。 package main import ( "log" "time" ) func main() { log.Print("started.") // 1秒かかるコマンド log.Print("sleep1 started.") time.Sleep(1 * time.Second) log.Print("sleep1 finished.") // 2秒かかるコマンド log.Print("sleep2 started.") time.Sleep(2 * time.Second) log.Print("sleep2 finished.") // 3秒かかるコマンド log.Print("sleep3

    Goルーチンで並行化する方法: 6秒かかる処理を3秒にしよう - Qiita
  • Golang Goの並列処理を学ぶ(goroutine, channel) - Qiita

    Goのコンカレンシー、略して合コンを勉強したわけですが。 Tour of Goの例とかはさっぱり良くわからないので "Goルーチンで並行化する方法: 6秒かかる処理を3秒にしよう" を参考にして遊んでみました。コードもこの記事からとったものです。大変わかりやすい例で、並行処理の素晴らしさがよく分かる記事でした。 package main import ( "fmt" "time" ) func threeSecond() { time.Sleep(3000 * time.Millisecond) fmt.Println("3 seconds passed") } func oneSecond() { time.Sleep(1000 * time.Millisecond) fmt.Println("1 second passed") } func twoSecond() { time.Sle

    Golang Goの並列処理を学ぶ(goroutine, channel) - Qiita
  • goroutine 使い方まとめ - Qiita

    goroutineとはなにか? 軽量スレッドである、並行処理で複数のスレッドが立てられる 「go」というシンプルなメソッドを使ってスレッドを立てる 「channel」は複数のgoroutineにメッセージを送るもの また「select」は複数のchannelを管理するものである mainの関数が終了しないようにgoroutineを制御する仕組みは「channel」か「sync」を使用する 以下の例はchannelを使用して複数のリクエストを並行処理で書いてある例である。 package main import ( "fmt" "log" "net/http" "time" ) func getStatus(urls []string) <-chan string { statusChan := make(chan string) for _, url := range urls { go

    goroutine 使い方まとめ - Qiita
  • golang でループを手っ取り早く並列化する方法 — KaoriYa

    func execLoop(list []Item) { for _, item := range list { do_something(item) } } list に格納された各 item に対して do_something() を適用する、よくあるタイプのループ処理です。 goroutine で並列化、その副作用 golang ではこの do_something() の適用を超お手軽に並列化できます。あ、もちろん do_something() はリエントラントである前提ですね。

  • GolangでCLIの場合にcobraを使うことにした件

    最初はCLI用のフレームワークに codegangsta/cli を使っていました。 サクっと書けるのですけれども、ちょっとややこしいことをしようとした時に悩むんですよね。 ということで、もしかしたら他の方がいいのかなーなどと考えた次第。 で、spf13/cobraなんですが、KubernetesやHugoが採用しているということで興味はあったものの情報があまりなかったので、まじめにREADMEも読んでいなかったのです。 https://github.com/spf13/cobra あらためてちゃんと見てみたところ、あ、これはすばらしい、という点が多々ありまして、既存のコードをすぐcobraに書き換えました。 ・サブコマンドが個別の.goファイル単位で追加できる ・サブコマンドにコマンドを追加することができる ・フラグにスコープが付けられる(サブコマンド以下へ引き継ぐか否か) ・実行前後に

  • CLI作成支援パッケージ Cobra を使い、Go 言語でコマンドラインツールを作ってみる - Qiita

    はじめに Go 言語でコマンドラインツールを作ることができる Cobra というパッケージがあります。僕が最近愛用している hugo も採用したという非常に優れたパッケージです。 Cobra https://github.com/spf13/cobra 今回はこの Cobra を使って、2つの数字を指定すると足し算を行ってくれる go-keisan というコマンドラインツールを作ってみました。 go-keisan の仕様 稿で作ろうとしている go-keisan の仕様はこんな感じ。 //バージョン番号を表示 >go-keisan version //使い方を説明 >go-keisan help //サブコマンド add で足し算の結果を返す >go-keisan add 12 34 46

    CLI作成支援パッケージ Cobra を使い、Go 言語でコマンドラインツールを作ってみる - Qiita
  • 他言語と比較したGo言語の良し悪し及び学習について

    2017/06/23 Geeks Who Drink in Tokyo--Go Go Golang Edition! での発表です。 https://nulab.connpass.com/event/59086/

    他言語と比較したGo言語の良し悪し及び学習について
  • GoのためのGo

    Go言語はシンプルさを念頭にデザインされた言語です。仕様は単純明瞭さのために小さく収められていますが、そのため表現力に欠けているとか、コードが冗長になるという印象を持つ人も多いでしょう。有名なところでは、ジェネリクスや例外といった機能が(今のところ)存在しないことが問題にされることが多いようです。 一般に、ソフトウェアエンジニアリングというものは書かれる言語だけに依るものではありません。視点を拡げてGoを取りまくツール群を含めて見てみると、go fmt や goimports といったツールが広く使われていること、また go generate コマンドの存在などを見ても、Goという言語には、人間のプログラミングを機械によってさまざまな面から補助しようという態度があります。

  • 基礎からしっかり学ぶGo言語

    Googleがリリースしたプログラミング言語Goは、国内での事例も増えつつあり、注目が集まっています。この連載では、Go言語の基礎から実際にWebアプリケーションを作成するところまでを紹介します。 Gopherの原著作者はRenée Frenchさんです。 Original Creator of "Gopher" is Renée French.

  • 書籍「みんなのGo言語」

    2016年9月に発売された「みんなのGo言語」を一読(厳密にはブログを書くため二読)しました。 他の日語のGoの書籍と比べて、お財布に優しいお値段だし、ページ数も薄いし、IT雑誌のムックっぽい作りだし、読みやすそうだと思って入手してみると...q@w@p Goの入門書を読み終えた方、Goをプログラミングしていて困った方、Goの知識を整理&確認したい方、そして、業務アプリをGoで開発したい&している方にオススメの内容かと思います。 以下、読書感想文ですが、書を入手して実際に読み進めて頂きたいため、少しぼやかして書いています。あと、目線?着眼点?がおかしかったらすみませんm(__)m 各章について 第1章 松木さん:「みんなのGo言語」の執筆に参加しました http://www.songmu.jp/riji/entry/2016-09-18-go-book.html これからGoのコードを

  • はじめてのGo―シンプルな言語仕様、型システム、並行処理 記事一覧 | gihyo.jp

    第4章標準パッケージ―JSON、ファイル、HTTP、HTMLを扱う Jxck 2015-04-23

    はじめてのGo―シンプルな言語仕様、型システム、並行処理 記事一覧 | gihyo.jp
  • Goの初心者が見ると幸せになれる場所 #golang - Qiita

    公式サイト A Tour of Go Web上で実行しながら学ぶことができる公式のチュートリアルです。 チュートリアル 公式のチュートリアルです。初学者向けからジェネリクスのチュートリアルなども用意されています。 A Tour of Goが終わった後に取り組むと良いでしょう。 Go Wiki Go Code Review Commentsなどが掲載されているGitHub上のWikiです。 パッケージドキュメント 標準パッケージやサードパーティ製のパッケージのドキュメントが見れるサイトです。検索もできます。 入門 プログラミング言語Go完全入門 筆者が作っている巨大なGoの入門資料です。なぜGoが作られたのか、から最新のジェネリクスの情報、静的解析まで扱っています。 Gopher道場 Goを体系的に学べる場です。10時間くらいある動画教材(自習室から入手可)もあります。 Go の最初の手順

    Goの初心者が見ると幸せになれる場所 #golang - Qiita
  • 1