タグ

ブックマーク / qiita.com/tenntenn (6)

  • ゼロ値を使おう #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
  • インタフェースの実装パターン #golang - Qiita

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

    インタフェースの実装パターン #golang - Qiita
  • [Go言語]structにinterfaceを埋め込んで,動的に入れ替えるパターン - Qiita

    正直,何に使えるのよくわかりませんが,以下のようにすると動的にinterfaceの実装方法を変更できることに気づきました. structの匿名フィールド(埋め込み)として,interfaceを設定すると,そのstructも埋め込んだinterfaceを実装していることになります.埋め込んだinterfaceは匿名フィールドなので,型名でアクセスして入れ替えることができます. 以下の例では,fmt.Stringerインタフェースの実装を動的に変更しています. Go Playgroundで実行する package main import ( "fmt" "strings" ) type StringerFunc func() string func (sf StringerFunc) String() string { return sf() } type Person struct { fm

    [Go言語]structにinterfaceを埋め込んで,動的に入れ替えるパターン - Qiita
  • 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
  • Go言語におけるinterface{}とリフレクションを使ったパターン - Qiita

    出力引数としてinterface{}を受け取る 設定したい変数のポインタをinterface{}として受け取る。 interface{}なので、任意の型を渡すことができる。 reflect.ValueOfでreflect.Value型に変換する。 その後、Value.Elem()でポインタが指している先を取得して、Value.Set()で値を設定する。 package main import ( "fmt" "reflect" ) func set(p, v interface{}) error { pv := reflect.ValueOf(p) if pv.Kind() != reflect.Ptr { return fmt.Errorf("p must be pointer.") } vv := reflect.ValueOf(v) if pv.Elem().Kind() != vv

    Go言語におけるinterface{}とリフレクションを使ったパターン - Qiita
  • Go言語でWebAppの開発に必要なN個のこと - Qiita

    元ネタ あるプログラミング言語で実際にWebAppを開発できるようになるまで、何が必要だろうか。言語仕様の習得は終えているとしよう。おそらく、最低限以下のような知識が必要だと思われる。とりあえずGo言語について知っていることを書いた。 パッケージマネージャ 標準でついてるgoツールを使おう。必要なライブラリはリポジトリから、go getで取ってこよう。 http://golang.org/cmd/go/#hdr-Download_and_install_packages_and_dependencies アプリケーションサーバ 標準パッケージのnet/httpパッケージを使えばhttpサーバを動かすことができる。apacheやnginxで動かしたかったら、標準パッケージのnet/http/cgiパッケージやnet/http/fcgiパッケージを使えばいい。 http://golang.or

    Go言語でWebAppの開発に必要なN個のこと - Qiita
  • 1