タグ

go言語に関するy_yukiのブックマーク (29)

  • Go言語における埋め込みによるインタフェースの部分実装パターン - Qiita

    構造体 Go言語には、クラスがない。そのため、代わりに構造体(struct)を使い、その型にメソッドを設けることで似たような振る舞いをさせる。 package main import "fmt" type Person struct { FirstName string LastName string } func (p *Person) Name() string { return p.FirstName + " " + p.LastName } func main() { person := &Person{"Taro", "Yamada"} fmt.Println(person.Name()) }

    Go言語における埋め込みによるインタフェースの部分実装パターン - Qiita
  • Go言語でAPIサーバーを実装しました - Speaker Deck

    GoでCtoCサービスのAPIサーバーを実装した構成 今回の構成で良かったところ 困ったところ、直したいところ

    Go言語でAPIサーバーを実装しました - Speaker Deck
  • Go言語のメモリ管理

    ソフトウェアにとってメモリは不可欠です。 実行する命令も、メモリにロードしなければ実行できません。 ソースコードに書かれた定数値も、いったんメモリにロードしないと使えません。 関数を呼び出すにも、スタックと呼ばれるメモリ領域が必要です。 スタック以外に、ヒープと呼ばれるメモリ領域が必要なこともあります。 今回は、Go言語のプログラマーが作成するプログラムの下で、どのようにメモリが管理され利用されるかを探ります。 Go言語のメモリ管理というとガベージコレクターの話を思い起こすかもしれませんが、ガベージコレクターについては連載では取り上げません。 メモリ確保の旅 コンピューターに接続されている物理的なメモリチップが、どのような過程を経てプログラムで使われるのか、順番に見ていきましょう。 (1): カーネル 最近のオペレーティングシステムでは複数のプロセスを同時に実行できます。 それらのプロセ

    Go言語のメモリ管理
  • Go言語にさらに入門するために係り受け解析器を書いた話 - yasuhisa's blog

    今年からGo言語に入門していますが、もう少し複雑なものをものを書いてみたいと思ったので、係り受け解析器を書きました。その過程で工夫したこと、苦労したことをまとめます。作ったものはこちら。 一人で作っているプロジェクトですが、100行以下の細かめの修正毎にPull Requestを作っているので、どのような過程でやっているかが比較的分かりやすいと思います。 easy-first algorithmについて 係り受け解析アルゴリズムの1つです 最も自信のある(つまり簡単な)ところから係り受け関係を付けていくgreedyな方法です コーパスには正解の係り受けは付与されていますが、簡単さの順序は当然分からないので、構造化パーセプトロンでそれを含めて学習します 構造化パーセプロトンについては入門エントリを書いているので、興味がある方はどうぞ なぜ係り受け解析器を書いてGo言語の入門をするのか 学んだ

    Go言語にさらに入門するために係り受け解析器を書いた話 - yasuhisa's blog
  • Go言語のFunctional Option Pattern - Qiita

    オプション パッケージを作る際、柔軟性を持たせるためにオプションを持たせたい時がしばしばあります。 しかしオプションは知っての通り設定しないことが少なくありません。 単にコンストラクタに並べるようでは無用な複雑さをはらむことになります。 JavaなどではOptional Parameterなどのように、デフォルト値が指定できる機能があります。 機能の厳選されたgo言語ではそのような機能はありませんが、 "Self Referential Functions Design"というテクニックがあり、 それについての記事がRob Pike氏の記事を筆頭にいくつか説明されています。 オプションと相性が非常に良いため、合わせて"Functional Option Pattern"とも呼ばれています。 Dave Cheney氏の記事を参考におおまかに説明したいと思います。 様々な解決策 あるServe

    Go言語のFunctional Option Pattern - Qiita
  • [翻訳] Why Go? - Qiita

    (この記事は Dave Cheney さんの Why Go? の翻訳です。) 数週間前、友人に「Goに注目に値するのはなんで?」と聞かれました。 彼は私がGoに情熱を注いでいることを知っていましたが、なぜ私が他の人もGoを気にするべきだと思っているのかを知りたいようでした。 この記事は、私がGoを重要なプログラミング言語だと考える、3つの大きな理由を紹介します。 メモリ安全 個人としては、私もあなたもC言語でメモリリークも危険なメモリの再利用もしないプログラムを書く事ができるでしょう。しかし、40年以上の経験から、集団としてのプログラマーはC言語で信頼できるプログラムを書けない事がはっきりしています。 コードの静的解析、 valgrind, tsan (訳注: たぶん ThreadSanitizer), -Werror といったツールは10年以上前から使えますが、それらのツールが広く認知さ

    [翻訳] Why Go? - Qiita
  • Go言語でWebアプリを作りかけて辞めた話 - ぼっち勉強会

    3行で要約 golangでwebアプリを作り始めた golangは好きだけど、今回求める要件に合わないことに気付いた 途中まで書いたコードを捨ててRailsで書き直した 私のGoスキル A Tour of Goを途中まで みんなのGo言語を読んだ スターティングGo言語を読んだ スクレイピングしてDBに保存する簡単なバッチをGoで書いた 背景 とあるtoB向け受発注のWebアプリを作ることにしました。 開発者は私1人。私が目指した基準は以下のものです。 少なくとも3年はメンテできること 未来の自分(他人)が読んでも理解できること このアプリとガッツリ付き合う予定ではなく、出来れば保守は違う人に回したいし機能追加とかも控えめにしたい(重要) デプロイとか運用の手間を簡単にしたい ついでに、学んでおくことが有益になりそうな言語がいい これらを踏まえ、以下の理由からGoを選択しました。 シングル

    Go言語でWebアプリを作りかけて辞めた話 - ぼっち勉強会
  • ファイルシステムと、その上のGo言語の関数たち(2)

    Base()とDir()はSplit()を目的別に特化させたものです。 複数のパスからなる文字列を分解する filepath.SplitList()という名前の関数もあります。名前だけ見るとパスの分割に使えそうですが、これは別の用途の関数で、 環境変数の値などにある「複数のパスを1つのテキストにまとめたもの」を分解するのに使います。 たとえば、次のコードは、Unix系OSにあるwhichコマンドをGoで実装してみたものです。 PATH環境変数のパス一覧を取得してきて、それをfilepath.SplitList()で個々のパスに分割します。 その後、各パスの下に最初の引数で指定された実行ファイルがあるかどうかをチェックしています。 package main import ( "fmt" "os" "path/filepath" ) func main() { if len(os.Args)

    ファイルシステムと、その上のGo言語の関数たち(2)
  • Go言語がダメな理由 | POSTD

    私はGo言語が気に入っていますし、多くの場面で使用します。現にこのブログもGoで書いています。Goは便利な言語ですが、優れた言語とは言えません。つまり、悪くはないけれど、十分ではないということです。 満足できない言語を使用する際は注意が必要です。注意を怠ると、その言語を次の20年間使い続ける羽目になるかもしれないからです。 私のGoに対する主な不満を文にまとめました。既に何度も指摘されていることも含まれていますが、中にはこれまでほとんど話題になっていない指摘もあります。 これから列挙する全ての課題には既に解決策があることを示すため、私が優良な言語と考えるRustやHaskellと比較して説明します。 汎用プログラミング 課題 誰でもさまざまな事柄に幅広く対応できるコードを記述したいと考えます。例えば数のリストの合計を求めるために定義した関数が、小数、整数、またその他の合計を求められるもの

    Go言語がダメな理由 | POSTD
  • Google App EngineでGoを動かすときに知っておくべきこと(ソースコード・ビルド編) - 詩と創作・思索のひろば

    Google App Engine(GAE)で Go 製のウェブアプリを動かしたかった話。いっぺん動かしてみると GAE/Go はウェブアプリを動かす環境としてはとてもいい。ただ、中途半端な知識だけで始めると開発者としてはつまずくことが多かったので、分かりにくい点をまとめておく。 Google App Engine Go Standard Environment について goapp は $GOPATH 以下もアプリケーションのソースとしてアップロード/コンパイルする goapp はプロジェクトルート以下のソースコードをすべてコンパイルしようとする go-app-builder: Failed parsing input: parser: bad import "syscall" in ... go-app-builder: Failed parsing input: app file x

    Google App EngineでGoを動かすときに知っておくべきこと(ソースコード・ビルド編) - 詩と創作・思索のひろば
  • AWS Lambda in Golang

    AWS Lambdaによるサーバレスアーキテクチャの基に触れてみよう!【kintone & AWS ハンズオン祭り2015秋 B-2】

    AWS Lambda in Golang
  • ブログ記事「Go言語(Golang) はまりどころと解決策」についてのコメント · hnakamur's blog

    2016-08-02 Go言語(Golang) はまりどころと解決策の記事についてのコメント記事を誰かが書くだろうと思ってスルーしてましたが、見かけないので書いてみます。 ただし私はGo言語を使って開発していますが、言語自体を詳細に知るエキスパートでは無いです。Go言語にかぎらず個人的にはややこしいところにはなるべく近づかないスタンスなので、詳しい方から見ると物足りないかもしれません。そう感じた方は是非ブログ記事なりを書いていただけると嬉しいです。 interface とnil (Goのinterfaceは単なる参照ではない) 特にコメントはなくてそのとおりだと思います。 Frequently Asked Questions (FAQ)に加えて Effective Goも早めに読んでおいたほうが良いと思います。 またnilに関する文献としては Understanding Nil // Sp

  • Go言語を学びたいエンジニア必見の記事・スライド12選

    Go言語の主な特徴として、「実行が高速である」「言語仕様がシンプルである」という点が挙げられます。 発表当初の対応OSはOS X(Mac)とLinuxのみでしたが、Go 1.0(2012年3月リリース)からはWindowsGo 1.4(2014年12月リリース)からはAndroidも対象となり、開発範囲が広がりました。 次世代のプログラミング言語として注目を集めるGo言語をこれから学ぼうと考えている方のために、Go言語が基礎からわかるサイト・記事、スライドを12個まとめてご紹介します。 Go言語が学べるサイト・記事 golang-jp - The Go Programming Language http://golang-jp.org/ Go言語の家サイト(golang.org)を日語に訳しているサイトです。 未翻訳の部分もありますが、英語が苦手な方にはとても役に立つサイトでしょう。

    Go言語を学びたいエンジニア必見の記事・スライド12選
  • Golang Samples

    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

    Golang Samples
  • Go言語のエラーハンドリングについて - Qiita

    皆さまゴールデンウィークはいかがお過ごしでしょうか。 GW前に投稿しようと下書きにちまちま書き溜めていた記事ですが、スマホで誤ってゴミ箱ボタンを押してしまったがために一瞬で電子の藻屑と化してしまい泣きながら記事を書き直しています。 せめて削除時は確認ダイアログぐらい出るようにQiitaには改善してもらいたいものです。。 閑話休題。 Go言語で複数エラーハンドリングするためにいい方法ないかなーとネットの海を彷徨っていたところ、なかなかよさげな記事を見つけたので実例を交えて書き残していきたいと思います。 go1.6.2で検証 エラー処理の基 Go言語にはtry~catch~finallyの例外処理は存在しません。 http://golang.jp/go_faq#exceptions Go言語ではエラーを処理するためにerrorインタフェースが用意されています。 これはfunc Error(

    Go言語のエラーハンドリングについて - Qiita
  • 実践Go言語 - golang.jp

    Go言語とは、Googleが開発した新しいプログラミング言語です。 当サイトではこの新しい言語についての情報を集約していきます。 このサイトの更新が滞っており、情報が古くなっておりますのでご注意ください。 はじめに Goは新しい言語です。既存の言語からアイデアを取り入れてはいますが、他の言語にはない機能をもっているため、実際に記述されたGoのプログラムは、他の類似した言語とはだいぶ異なるものになります。C++またはJavaプログラムをGo言語へ直接変換しても、あまりうまくは行きません。JavaのプログラムはあくまでJavaで書かれており、Go言語で書かれてはいないからです。一方で、Go側の視点からこの問題を考えると、変換に成功したとしても、全く違うプログラムができてしまうことになります。言い換えると、Go言語を使いこなすには、Go言語の機能や文法を理解することが重要です。おなじく、Go言語

  • 『Go言語でTestableなWebアプリケーションを目指して』

    はじめまして@shohhei1126です! 2016年1月にリリースされたAmebaFRESH!のサーバサイドを担当しております。 ここ1、2年社内でもGo言語を使うプロジェクトが増えてきているのですが(Go Lang in Cyberagent こちらもどうぞ)AmebaFRESH!でもGo言語をメインに使っています。 今回はGo言語のテストへのアプローチについて考えたいと思います。 テストの書きやすさGoでは言語レベルでテストをサポートしている(https://golang.org/pkg/testing/#pkg-overview)のでテストを書くという敷居は他の言語より低く感じます。実際これまでのプロジェクトの中で一番テストを書いていますし、やっぱりテストがあると安心感ありますね(・∀・) Mock化の難しさテストの取っ掛かりとしての敷居は低いですがデータアクセスまわりのテストを書

    『Go言語でTestableなWebアプリケーションを目指して』
  • インタフェースの実装パターン #golang - Qiita

    はじめに この記事は,以下の過去にQiitaに投稿したインタフェースの実装パターンの記事に,typeやメソッド,インタフェースの基的な説明を追加してわかりやすくしたものです. Go言語における埋め込みによるインタフェースの部分実装パターン structにinterfaceを埋め込んで,動的に入れ替えるパターン まずtypeとメソッド,基的なインタフェースの実装方法についておさらいすることで,さまざまなインタフェースの実装パターンを扱う準備をしましょう. typeで型を宣言する まずはじめに,Go言語における型の宣言方法をおさらいします.Go言語をはじめたばかりの方の中に,typeの使い方を限定的にしか理解していない方をよく見かけます.ご存知のとおり,typeは型を宣言するために使うキーワードです.以下のように,構造体型やインタフェース型の宣言の際に,使用することが多いでしょう. //

    インタフェースの実装パターン #golang - Qiita
  • 仕事の言語に飽きてきた人はGoを使ってみてほしい――『スターティングGo言語』著者が語るGoのパワー

    簡単で早いGoのパワーに目覚める ――『スターティングGo言語』はすでにJavaPHP、Cを使い慣れている方のために書かれた入門書ですが、松尾さんご自身はどのようなプログラミング遍歴があってGoを使い始めたのでしょうか。 松尾:私はこれまでさまざまなプログラミング言語に触れてきました。最初は、長崎・佐世保市に住んでいた小学生の頃で、MSX2+というパソコンをたまたま手に入れたのですが、周りに使い方を教えてくれる人はおらず、や雑誌で知識を吸収して、一人で遊んでいました。それがプログラミングの原体験です。それ以降もプログラミングは趣味でやっていました。大学を辞めたあと、福岡のとあるSI企業に勤めることになりました。当時はJavaの黎明期で、Java Applet、Servletといった新技術が採用され始めた時期で、さまざまなことを試していた記憶があります。 24歳の頃に東京に異動しました。

    仕事の言語に飽きてきた人はGoを使ってみてほしい――『スターティングGo言語』著者が語るGoのパワー
  • Gopherの道を歩む – Node.jsからGo言語への移行 | POSTD

    私は大学時代に、興味位でJavaScriptを始めて、それ以来ウェブページを幾つか作成してきました。JavaScriptは常にC言語やJavaの合間の楽しい息抜きでしたが、アニメーションや、ユーザをあっと言わせるようなちょっとしたことを提供するといった、特殊な目的にかなり限られた言語だと考えていました。JavaScriptは覚えやすく、開発者に具体的な結果をすぐにもたらしてくれるので、コーディングする方法を学びたいと思っている人に私が教えた最初の言語でした。JavaScriptHTMLCSSを少し組み合わせれば、ウェブページが出来上がります。プログラミング初心者には喜ばれます。 その後、あることが2年前に起こりました。当時、私は、主にサーバーサイドのコードとAndroid用のアプリのプロトタイプに取り組む研究職に近い立場にいました。すぐにNode.jsの存在が目に留まりました。バック

    Gopherの道を歩む – Node.jsからGo言語への移行 | POSTD