並び順

ブックマーク数

期間指定

  • から
  • まで

321 - 360 件 / 2263件

新着順 人気順

golangの検索結果321 - 360 件 / 2263件

  • モンキーパッチのライブラリを使って,golang のメソッドを差し替える黒魔術を使ってみた - 押してダメならふて寝しろ

    モンキーパッチというのは,オリジナルのソースコードを変更せずに実行時にコードを拡張したり変更したりする手法のことです.動的言語で見かけるようなモンキーパッチを golang でもやってのけることができます(って,そういうライブラリを作っちゃった人がいます! 手法については,ライブラリの作者による詳説をご覧ください. Monkey Patching in Go ざっくり言うと,メソッドの開始アドレスをすげ替えて他のメソッド呼び出すようにするという感じのものです. なので, セキュリティ厳しいOSでは動かない. スレッドセーフじゃないし,そもそも何もセーフじゃない. ということにご注意ください. 動かなくても文句は言わない.ただし,時々動作がおかしくなるようなら go test -gcflags=-l のようにフラグをつけてみるといいかもしれません. かなり黒魔術ですが,テストでどうしてもモッ

      モンキーパッチのライブラリを使って,golang のメソッドを差し替える黒魔術を使ってみた - 押してダメならふて寝しろ
    • 私的メモ: golang 学習 - A Tour of Go をなぞる - Qiita

      (この内容は2014年07月時点のものです) 記事中の A Tour of Go のコードは、 このライセンス のもと、 The Go Authors と Google Inc. に帰属します 参考リソース 概観として Go メモ - 日本語公開記事 - サイボウズエンジニアのWIKI 中国語オリジナルの日本語版の解説書: build-web-application-with-golang/preface.md at master · astaxie/build-web-application-with-golang オフィシャル系 実践 Go: Effective Go - The Go Programming Language 翻訳版 (golang.jp): 実践Go言語 - golang.jp 仕様: The Go Programming Language Specificatio

        私的メモ: golang 学習 - A Tour of Go をなぞる - Qiita
      • ISUCON5 with Golang

        Presentation for GoCon 2015 Winter

          ISUCON5 with Golang
        • golang で S3 に大量ファイルを並列でアップロードする - Qiita

          概要 s3関連のコマンドは色々と既存のものがありますが、 javaだったり、rubyだったり、なんだかんだインストールが面倒。 大量のファイルをS3にアップロードするのに随分と時間がかかる。 複数のファイルを並列でアップロードできたらイイなというのと、 golangならインストールも実行ファイル1つだけで済むしなぁ・・・ という思いから、golangを使って「エイや!」で作って とりあえず、動くものができました。-> https://github.com/masahide/s3cp golangでAWS APIを使うには goamzを使えばよさそうです。 しかしgithub上にgoamzのforkが一杯あり、どれが良いのか迷います。 今回は星の数等から github.com/crowdmob/goamz を選択しました。 s3へのアップロード goamzを使えば簡単です。 https://

            golang で S3 に大量ファイルを並列でアップロードする - Qiita
          • GitHub - microsoft/vscode-go: An extension for VS Code which provides support for the Go language. We have moved to https://github.com/golang/vscode-go

            You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

              GitHub - microsoft/vscode-go: An extension for VS Code which provides support for the Go language. We have moved to https://github.com/golang/vscode-go
            • Golangの公式ドキュメントにシンタックスハイライトが無い件について - stefafafan の fa は3つです

              Go言語のドキュメントに掲載されているソースコードをみると、コメントが緑色になっている以外シンタックスハイライトが特にないことがわかる。 例えばブログの記事はこんな感じ。 blog.golang.org base64.goのソースコードとかを見るとこんな感じ。 golang.org 調べてみると、「シンタックスハイライト足しませんか?」という提案が何度かあったがどれも断られているようだった。 議論の様子 golang-nutsというGoogle Groupsのグループ (誰でも参加できる) で2012年にGo Playgroundにシンタックスハイライト足しませんか?という提案のスレがあった。 Rob Pike氏なども登場している。ざっくり読んだ感じ、「Go言語はシンタックスハイライトなくても十分読めるし不要だろう」みたいな流れ。 groups.google.com Redditでも同じこ

                Golangの公式ドキュメントにシンタックスハイライトが無い件について - stefafafan の fa は3つです
              • GolangでSIMDプログラミング - ( ꒪⌓꒪) ゆるよろ日記

                以前から気になっていたSIMDプログラミングをGoでやってみた。 Single Instruction Multiple Data (SIMD) 演算とは1回の命令で複数のデータを同時に処理する演算です.近年の CPU には SIMD 演算を行うことができる SIMD 演算器が搭載されており,Intel 社の CPU ならば Streaming SIMD Extensions (SSE) を用いることで SIMD 演算を行うことが可能です.SSE は CPU に搭載されている 128bit レジスタを用いて演算を行うため単精度データならば4つ,倍精度データならば2つずつ演算を行うことができます.また,近年 SSE 後継の SIMD 拡張命令として Intel Advanced Vector eXtentions (AVX) が登場しました.AVX は第2世代 Intel Core i シリ

                  GolangでSIMDプログラミング - ( ꒪⌓꒪) ゆるよろ日記
                • Golang 1.11 で導入された ListenConfig を使って SO_REUSEPORT を利用する - Carpe Diem

                  概要 先日リリースされた1.11でソケットオプションを設定できるようになりました。 これによってLinux 3.9から導入されたSO_REUSEPORTという、同じポートでbindすることが可能になる機能が利用可能になります。 環境 golang 1.11 macOS 10.13.6 (Darwin Kernel Version 17.7.0) Ubuntu 16.04 (4.4.0-87-generic) 何が嬉しい? 一言で言うとGraceful Restartが可能になるという点です。 通常サーバプロセスを再起動するとその瞬間はリクエストを捌けなくなります。 Rolling updateのような事ができる環境であればいいですが、そうではない場合 a) Listenしているsocketのfile descriptorの複製 b) SO_REUSEPORTを使う といった手段でデプロイ時

                    Golang 1.11 で導入された ListenConfig を使って SO_REUSEPORT を利用する - Carpe Diem
                  • Golangのインターフェースは拡張していいものなのか? - NullPointer's

                    早速Golangで頭を抱えている Goには「このインターフェースを実装するぞ!」という明示的な宣言がない。errorインターフェースがいい例だが、Error() stringというシグニチャのメソッドがある構造体は何でもerrorとして扱うことできるようになる。ダックタイピングのような挙動を示す そんなインターフェースの型によって分岐する単純なコードを考える type Animal interface { Bark() string } // animalを実装したCat type Cat struct {} func (cat *Cat) Bark() string { return "Nyan" } // animalを実装してないApple type Apple struct{} func whatIs(x any) { switch x.(type) { case Animal:

                      Golangのインターフェースは拡張していいものなのか? - NullPointer's
                    • 結局 golang の HTTP Response Body はどう閉じるのが正しいのか? - 押してダメならふて寝しろ

                      さっそくカウンター記事を頂きました.ありがとうございます! qiita.com たしかに必ず閉じてるように見えます.エラーがあっても Body が non-nil なら閉じるようにコード仕込んでおくというのは杞憂だったのでしょうか.そんな気もします.たぶん誰もそんな風にコード書いてないし,godoc のサンプルにもそういうのはない.(僕も元記事読んだときは衝撃的だった エラーがないときは Response Body が non-nil であることが godoc に書かれています. http://golang.org/pkg/net/http/#Client.Do なので,エラーがないときは Response Body を閉じるようにコードを仕込んでおく必要があります. それは gopher の共通認識な感じがしてるんですが,問題なのはエラーがあるときです. エラーがあるときは,たいていの場

                        結局 golang の HTTP Response Body はどう閉じるのが正しいのか? - 押してダメならふて寝しろ
                      • Interactive shell for Golang — mkouhei's blog

                        Interactive shell for Golang Golang用の対話形式シェル Gosh を作りましたよ、というお話です。 Golangでコードを書き始めた今年の年初くらいから、iPythonのような対話形式のシェルがほしいなと思っていました。気になるライブラリをちょっと試してみたいときに、 go get して、Emacsでコード書いて、 go run を実行する、というのは億劫で、 import したらそのまま go get して実行できれば良いな、と思っていました。 そういったツールが無いかと調べて、go-eval や igo や Go playground 1 にはたどり着いたのですが、パッケージをインポートする機能がないので自分の欲しい機能とは違う、ということでエイヤっと作ってみました。 特徴 現在の特徴としては次のとおりです。 Go 1.2 以上対応 対話形式のシェル

                        • 簡単な式の評価機を作ってみる #golang - Qiita

                          はじめに 皆さんはgoパッケージを使ったことはありますか?私は、Go!Go!言いながら、恥ずかしながら、あまりまともに使ったことがありませんでした。最近は、仕事でもAST(抽象構文木)を弄り倒すことがあるので、今回はgoパッケージに触れたいと思います。 ここでは、簡単な四則演算などを評価し、結果を返すREPLを作ってみます。一見難しそうですが、ほとんどgoパッケージの機能を使うので、非常に簡単です。 ASTへパースする まずは入力された文字列をパースし、ASTを生成してみます。ここでは、式の評価なので式単位でパースします。パースには、parser.ParseExprを用います。 たとえば、以下のように使用できます。 expr, err := parser.ParseExpr("1+1") if err != nil { panic(err) } ast.Inspect(expr, func

                            簡単な式の評価機を作ってみる #golang - Qiita
                          • Gondler という bundler for golang を作った - 鳩舎

                            2番煎じ乙。 Gondler という Bundler みたいなツールを go 向けに作りました。gom という先行実装があるのでもう作らんでもええかな感があったのですが、Ruby っぽいけど Ruby じゃない Gomfile とか、bundle exec 相当の機能がないとか、そういう理由でわざわざ自作しました。 基本的には bundler なので、バージョン、というよりコミットハッシュとかをロックするのに使います。 fork 元の gom との違いは インストール先ディレクトリがデフォルトでは .gondler になっている(変更可能(gom は変えられない)) Gondler 環境下の repl が起動できる(gondler repl) Gomfile を自動生成する機能はない Travis 用の yml を自動生成する機能はない bundle exec 相当の gondler ex

                              Gondler という bundler for golang を作った - 鳩舎
                            • GitHub - urfave/negroni: Idiomatic HTTP Middleware for Golang

                              You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

                                GitHub - urfave/negroni: Idiomatic HTTP Middleware for Golang
                              • GitHub - guardrailsio/awesome-golang-security: Awesome Golang Security resources 🕶🔐

                                You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

                                  GitHub - guardrailsio/awesome-golang-security: Awesome Golang Security resources 🕶🔐
                                • Using GraalVM to run Native Java in AWS Lambda with Golang

                                  If you are deploying serverless applications in AWS Lambda and using Java, you are well aware of cold start problems. Cold start happens because of the way the Java Virtual Machine works, it kicks in JIT (Just-in-time), and it needs to “warm-up” like a car from the 80s. AWS Lambda caches containers for you, so when idle, it is paused and brought back online immediately as soon as a request arrives

                                    Using GraalVM to run Native Java in AWS Lambda with Golang
                                  • IntelliJ IDEAでGoLangの環境構築 2015春 - tehepero note(・ω<)

                                    2015-04-13 IntelliJ IDEAでGoLangの環境構築 2015春 GoLang IntelliJ IDEA 久しぶりにIntelliJ IDEAでGoLangの環境構築してみたら、なんか前とはちょっと変わっていたので書き残しておきます。 諸準備 Goのインストール とりあえずhomebrew使います。現状の最新版は1.4.2です。 $ brew install go 次に、環境変数を設定。.bashrcとか.zshrcとかに記述します。 export GOPATH=$HOME/_go export PATH=$PATH:$GOROOT/bin:$GOPATH/bin ※homebrewで入れた場合、GOROOTは必要ない(はず)です。 IntelliJ IDEA CommunityでもUltimateでもどちらでも良いので、各自で用意してください。 プラグインのインスト

                                      IntelliJ IDEAでGoLangの環境構築 2015春 - tehepero note(・ω<)
                                    • golangの高速な構造化ログライブラリ「zap」の使い方 - Qiita

                                      はじめに 構造化メッセージが構築できる高速なロギングライブラリを謳っている『zap』を触ってみました。 ドキュメントがあまり充実していなくて、どんなことができるのかGodoc見ながら調査したので、その結果を自分用のメモがてら書いておこうと思います。 確認した環境とバージョン Mac OSX 10.11.6 (El Capitan) go v1.8 zap v1.0.0 zapの特徴 zapは以下のようなアプローチで高速化していると言っています。 Reflectionを使わない アロケーションしないJSONエンコーダを使用 可能な限りシリアル化のオーバーヘッドとアロケーションを避ける そして、独自のベンチマークによると、他の構造化ロギングライブラリだけでなく、標準ライブラリよりも高速に動作するそうです。 確かにReadMeのパフォーマンスを見ると圧倒的に高速で低アロケーションを実現しています

                                        golangの高速な構造化ログライブラリ「zap」の使い方 - Qiita
                                      • GitHub - golang/groupcache: groupcache is a caching and cache-filling library, intended as a replacement for memcached in many cases.

                                        You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

                                          GitHub - golang/groupcache: groupcache is a caching and cache-filling library, intended as a replacement for memcached in many cases.
                                        • GitHub - amitshekhariitbhu/go-backend-clean-architecture: A Go (Golang) Backend Clean Architecture project with Gin, MongoDB, JWT Authentication Middleware, Test, and Docker.

                                          A Go (Golang) Backend Clean Architecture project with Gin, MongoDB, JWT Authentication Middleware, Test, and Docker.

                                            GitHub - amitshekhariitbhu/go-backend-clean-architecture: A Go (Golang) Backend Clean Architecture project with Gin, MongoDB, JWT Authentication Middleware, Test, and Docker.
                                          • Golangで簡易的ワーカー/ジョブキュー - たにしきんぐダム

                                            goroutineの数を制限しつつ並列にジョブを実行したい ジョブは定期的に投入できたい ジョブが空っぽになっても終了しないで欲しい SIGTERMとか送ったら実行中のジョブが完了するまで待ってから終了してほしい というようなものが欲しくなることが最近よくある!のでメモ 参考 fireworq/dispatcher.go at 86126cb7de9fdc5ccc98d57aaa80f1abd5694463 · fireworq/fireworq · GitHub worker.go · GitHub Big Sky :: golang の channel を使ったテクニックあれこれ 実装 gistbe9fac4aa02419d68c6770a85e53c936 この実装ではmainの中のforループでのみジョブをenqueueしているが、 定期的に外部リソース(APIたたいたり、DBを眺

                                              Golangで簡易的ワーカー/ジョブキュー - たにしきんぐダム
                                            • golang.tokyo#21「Goエンジニアの採用」レポート | mom0tomo

                                              golang.tokyoも21回目! 今回のgolang.tokyoは「Goエンジニアの採用」がテーマでした。 公開が確認できたスライドについてはタイトルにリンクを貼っています。 Talk 1 社内ベンチャーで採用からチームビルディングで注力していること最初の発表は、パーソルプロセス&テクノロジー株式会社 seedscompany というシード事業部門でエンジニアの採用を手がけている@ntk1000さん。 求職者側に気をつけてほしいことや、採用時に気をつけていること、採用活動の見直し過程やチームビルディングの手法についてお話しいただきました。 Gopherに限らず、一般的なエンジニアの採用に役に立つ情報でした。 内容とは外れますが、全編シンプルな英語で書かれた大変美しくおしゃれなスライドでした! Talk 2 34人のGoの課題をレビューして感じたこと本来はgolang.tokyo募集時に

                                                golang.tokyo#21「Goエンジニアの採用」レポート | mom0tomo
                                              • テキスト分類ではじめる機械学習 / A tutorial of text classification with Golang. // Speaker Deck

                                                ゆるふわ分類問題ことはじめ @ Idea Quest (http://idea-quest.info/) どうやって最適化しているのかなどの理論的な話は無しで、なぜ機械学習をしたくなるのか、魔法で動いてるんじゃないんです、というところにフォーカスしつつ、無理やり Go ネタを持ち込む話。次回は最適化の話とかもしたい所。

                                                  テキスト分類ではじめる機械学習 / A tutorial of text classification with Golang. // Speaker Deck
                                                • init関数のふしぎ #golang - Qiita

                                                  はじめに 知られているようで、案外知られてないことをQiitaに投稿していくのも良いと思い、軽いネタですがinit関数についてまとめたいと思います。 init関数とは init関数は特殊な関数で、パッケージの初期化に使われます。 以下のようにmainパッケージに書くとmain関数より先に実行されます。 mainパッケージでない場合は、importするだけで呼び出されます。 package main import ( "fmt" ) func init() { fmt.Println("hello, init") } func main() { fmt.Println("Hello, main") } Playgroundで動かす init関数は何に使うのか? 上記では、初期化に使うと書きました。名前からしてそれは想像できますよね。 init関数は基本的にはパッケージ変数の初期化に用いられま

                                                    init関数のふしぎ #golang - Qiita
                                                  • AWSのIPリストを取得してCloudFormationで使えるセキュリティグループの定義を出力する(golang編) - でこてっくろぐ ねお

                                                    やりたいこと 全世界のAWSのEC2からだけ許可するsecurity groupを作りたいとかそんな感じのやつ それにどれくらいの嬉しさがあるかと言うと、まぁ人それぞれだよね 以下のテンプレート部分を少し変えると、AWS WAFの定義で全世界のAWSのEC2からのアクセスを拒否するとかそういうのにも使えるよね 方法 以下のスクリプト使うとSecurity Groupの定義が一個ペロッと出力されるので後は勝手に使うといいと思います。 最大の問題は、このIPレンジは当然そのうち変わるので、本来はJSONファイルの変更を検知してlambdaを動かして最新の情報に追随させるみたいなことをやる必要があるんですが、まぁ何か雑にやりたい時はこういうのでもいいんじゃないですかね。 ちゃんとやりたい場合は以下クラスメソッドさんのエントリ参照 dev.classmethod.jp プログラム GitHub -

                                                      AWSのIPリストを取得してCloudFormationで使えるセキュリティグループの定義を出力する(golang編) - でこてっくろぐ ねお
                                                    • Big Sky :: 簡単に回転画像が生成出来るコマンド「nekokak」をgolangで書いた。

                                                      kan さんが slack での公開型チャットの運用を始めました。 Soozy Slack #Soozy これはなに? #soozy は元々IRCのfreenodeにあったチャンネルで、日本のperlコミュニティを中心にperlのことを含むプログラミングに関わる話題を中心に話し合っていました... http://soozy.fushihara.net/ 皆さんも分かると思いますが、こういったチャットサービスで必ず必要となるのが回転する画像です。どうしても回転するアイコンが必要になったので、簡単に生成出来るコマンドを golang で書きました。 mattn/nekokak · GitHub https://github.com/mattn/nekokak 使い方は簡単。 $ nekokak input.png で animated.gif というファイルが生成されます。これで今すぐ回転する

                                                        Big Sky :: 簡単に回転画像が生成出来るコマンド「nekokak」をgolangで書いた。
                                                      • Docker と Golang と Goji で動かしてみたメモ - 牌語備忘録 -pygo

                                                        (macosx10.9, boot2docker1.6.0) インストール boot2docker http://boot2docker.io/ boot2docker 実行 $ boot2docker init $ boot2docker start $ $(boot2docker shellinit) ファイル Dockerfile hello.go Dockerfile FROM golang:1.4.2 RUN mkdir -p /go/src/app COPY . /go/src/app WORKDIR /go/src/app ENV GOPATH /go RUN go get github.com/zenazn/goji EXPOSE 8000 CMD ["go", "run", "/go/src/app/hello.go"] COPY と ADD の使い分けって? hello

                                                          Docker と Golang と Goji で動かしてみたメモ - 牌語備忘録 -pygo
                                                        • 5 Advanced Testing Techniques in Go [Golang Test Suite]

                                                          Connections Overview Integrate web and mobile app data with a single API Warehouses Easily transform and load customer data Reverse ETL Move warehouse data to your applications Functions Customize your customer data pipeline Developer Toolkit Build on Twilio Segment

                                                            5 Advanced Testing Techniques in Go [Golang Test Suite]
                                                          • Goの抽象構文木(AST)を手入力してHello, Worldを作る #golang - Qiita

                                                            はじめに タイトルを見て、「はて?何を言ってるんだろう」と思った方もいるでしょう。 その通りです。通常、抽象構文木(AST)を取得するには、「ASTを取得する方法を調べる」で解説したように、go/parserパッケージの関数を使ってソースコードをパースする必要があります。 しかし、この記事では温かみのある手入力をすることで、日頃なんとなく取得しているASTがどういうノードで構築されているのか、最低限必要なフィールドは何なのかということを改めて知ることを目的としています。 なお、この記事を書いた時のGoの最新バージョンは1.7.4です。 今回作るコード 今回はかのプログラム言語Cやプログラミング言語Goで有名なHello, Worldを出力するプログラムを作りたいと思います。 具体的には、以下のようなコードです。 なお、せっかくなので、ここではGoっぽく、Hello, 世界としています。 p

                                                              Goの抽象構文木(AST)を手入力してHello, Worldを作る #golang - Qiita
                                                            • Cloud DLPをGolangで叩いて見せられないデータを抽出し秘匿化してみる - SMARTCAMP Engineer Blog

                                                              今週末から北海道オフィスに出張でワクワクしている瀧川です。 私はデータ分析基盤の構築をする機会がよくあり、FluentdやEmbulk、Digdag、BigQueryを好んで使っています。 構築する際に気をつけることというと、冪等性やログ欠損(リカバリ)などいろいろあるかと思いますが、その中でも重要になるのが 個人情報などの見せられないデータ(機密情報) の扱いかな思っています。 構造化されたデータの個人情報であれば、そもそも分析基盤に転送しないことや、マスキングして送るなど対策は容易*1ですが、例えば「バグでログの可変な箇所に個人情報が入ってしまった」とか「アンケートの集計をしたいが電話番号など入ってしまっていて隠したい」などの場合、検出や秘匿化はかなり難しいと感じています。 その課題を解決してくれるのがGoogleCloud DLP(Data Loss Prevention) APIで

                                                                Cloud DLPをGolangで叩いて見せられないデータを抽出し秘匿化してみる - SMARTCAMP Engineer Blog
                                                              • ʕ  ゚皿゚ ʔ Golangからv8を使う - ( ꒪⌓꒪) ゆるよろ日記

                                                                cgoとlibv8を使って、タイトルのとおりのものを作ってみた。頑張ればnodeみたいなのをgoで書けるかもナー。 ʕ  ゚皿゚ ʔ cgo楽しいおシーゴォー 基本的な方法は以下の記事にあるとおりだが、v8のバージョンが上がっていたりするので、多少の手直しをしてある。 Embedding V8 Javascript Engine and Go | Brave New Method コードはすべてGithubにある yuroyoro/golang_v8_Embedding_sample · GitHub まず、libv8を使う以下のようなwrapperをc++で用意して、cgoから使えるようにしておく。 v8warpper.h #ifndef _V8WRAPPER_H #define _V8WRAPPER_H #ifdef __cplusplus extern "C" { #endif /

                                                                  ʕ  ゚皿゚ ʔ Golangからv8を使う - ( ꒪⌓꒪) ゆるよろ日記
                                                                • ダックタイピングって一体なんなのよ【golang】 - DRYな備忘録

                                                                  ダックタイピングって ダック・タイピング - Wikipedia 一体何さ。わからないよ 調べた golangにおけるダックタイピングとは、で一番分かりやすかったのこれ Go言語における埋め込みによるインタフェースの部分実装パターン - Qiita 2014/05/27 追記 つまり、 Go言語ではinterfaceを使った型の制限が可能で、逆にinterface定義において宣言したメソッドをすべて満たすstructを作れば、それはそのinterfaceを満たす型として扱える。これがダックタイピング。 「ダックタイピング」の名前の由来は「アヒルのように歩き、アヒルのように鳴くものはアヒルに違いない」という言い回しから来ている。 「それ」がアヒルのように歩きアヒルのように鳴きさえするなら、もし「それ」が実は魚のように泳ぐこともできて、蛇のように地を這うことがあったとしても、「それ」はアヒルと

                                                                    ダックタイピングって一体なんなのよ【golang】 - DRYな備忘録
                                                                  • learn Golang for Infrastructure engineer

                                                                    https://gist.github.com/nwiizo/deb8db98114408e2233fa790dd7e0083

                                                                      learn Golang for Infrastructure engineer
                                                                    • ゼロ値を使おう #golang

                                                                      Goの変数は必ず初期化される 組込み型のゼロ値 Goの変数は必ず初期化されることをご存知でしょうか? 例えば、int型の場合は0で、string型の場合は""で初期化されています。 次のように、代入せずにfmt.Printfで表示させてみましょう。 package main import "fmt" func main() { var n int var f float64 var s string var b bool fmt.Printf("%#v %#v %#v %#v", n, f, s, b) }

                                                                        ゼロ値を使おう #golang
                                                                      • Go言語の golang/go パッケージで初めての構文解析ハンズオン - Qiita

                                                                        この記事は、Go Advent Calendar 2018の5日目の記事です。 「Go言語でつくるインタプリタ」を読んで、プログラミング言語の「仕組み」に興味がでてきた。そして、Go言語だと構文解析が簡単に出来るとの噂が!ということで golang/go パッケージを触ってみると、Go言語で出来る事のイメージが更に広がった。せっかくなので自分のような初心者向けにハンズオン形式で紹介していきます。最終的にGo言語のソースコードから抽象構文木を所得して、そこから更に、抽象構文木を書き換えてGo言語のソースコードに変換するところまでやります。 とりあえず抽象構文木を手に入れてみる 抽象構文木 (abstract syntax tree、AST) とは言語の意味に関係ない情報を取り除き、意味に関係ある情報のみを取り出した(抽象した)木構造のデータ構造です。よってGo言語においてはスペース、括弧、改

                                                                          Go言語の golang/go パッケージで初めての構文解析ハンズオン - Qiita
                                                                        • Go Binary Hacks - go buildせずにビルドする #golang - Qiita

                                                                          はじめに Goではルールに従いソースコードを配置してgo buildを実行するだけで実行バイナリを作ることができます。 とても便利なのですが、一体裏で何が行われているのでしょうか? この記事ではgo buildの仕組み、簡単なシンボルテーブルの説明、Goに用意されているバイナリ操作コマンドを学ぶことができます。 実行バイナリの作成 実はGoでもC言語と同様に以下のフローで実行バイナリを生成しています。 1. ソースコードをコンパイルをしてオブジェクトファイルを作成 2. オブジェクトファイルをまとめてライブラリを作成 3. オブジェクトやライブラリをリンクして実行バイナリを作成 go buildではこれらの処理を複数コマンドにより実現しています。 コマンドの詳細はgo buildの-xオプションで確認することができます。 同一パッケージに1つのファイルしかない場合

                                                                            Go Binary Hacks - go buildせずにビルドする #golang - Qiita
                                                                          • 実装して理解するスライス #golang - Qiita

                                                                            つまり、Goのスライスは次の図のように、配列へのポインタと長さと容量を持った値として表現されています。 runtimeとreflectパッケージでポインタがunsafe.Pointerとuintptrで表現方法は違いますが、どちらもポインタを表す値です。 unsafe.Pointerは任意型のポインタと相互変換可能な型です。一方で、uintptrは整数型でunsafe.Pointerに変換が可能な型です。uintptrは整数型の1つなので、int型などと同様に四則演算が可能です。 次のように、[]int型をreflect.SliceHeader型として解釈してみます。 まず、[]int型の変数であるnsのポインタを取り、unsafe.Pointer型に変換します。 変換した値はptrという変数に入れています。 次に、ptrを*reflect.Slice型にキャストし、そのポインタが指す先の

                                                                              実装して理解するスライス #golang - Qiita
                                                                            • Golang の sort パッケージ - Qiita

                                                                              intro sort パッケージは slice などをソートするデフォルト実装や、独自の比較ロジックを定めるインタフェースなどが提供されています。 Go のインタフェース、継承による拡張などの考え方的にも面白いので解説メモ。 Sort function sort パッケージには Sort 関数が定義されている。 そのシグネチャは以下。 つまり、ここに sort.Interface インタフェースを満たしたものを渡すと、中で Quick Sort, Heap Sort, Insertion Sort を、条件に応じて使い分け、いい感じに並べ替えてくれる。 Sort Interface sort.Interface のインタフェースは以下。 (Go では、メソッドを持っていればインタフェースは満たされる) type Interface interface { // Len is the num

                                                                                Golang の sort パッケージ - Qiita
                                                                              • The http.HandlerFunc wrapper technique in #golang

                                                                                Founder at MachineBox.io — Gopher, developer, speaker, author — BitBar app https://getbitbar.com — Author of Go Programming Blueprints

                                                                                • github-nippou という gem を golang で書き直したという発表をした - Feedforce Developer Blog

                                                                                  こんにちは。増田(id:masutaka26)です。社内勉強会の順番が来ると、2ヶ月前くらいからソワソワしてきます。 そんなわけで今回は『日報を golang で支える技術』というお題で発表しました。 発表の内容 以下、スライドからの抜粋です。 背景など 以前の社内勉強会で github-nippou という gem を紹介した ひとつの ruby スクリプトからそこそこ作り込み、毎日便利に使っている 先日も同僚の @ryz310 から pull request をもらって、さらに便利になった からの、golang への書き換えをした。その場でライブリリース モチベーション 以前 hub コマンドが ruby から golang に移行したのを見て、一度やってみたかった rubygems の CLI を Dockerize してポータビリティを高めるのは何かが違うという気持ち @ryz31

                                                                                    github-nippou という gem を golang で書き直したという発表をした - Feedforce Developer Blog