LoginSignup
8
2

More than 5 years have passed since last update.

プログラミング言語Go読書会#3(1.7-2.3.1)[2017/03/29]

Last updated at Posted at 2017-04-02

Go読書会 #3 ランサーズ株式会社で行われたので進捗と技術的なメモ書きを書いておきます。読書会の内容はプログラミング言語Goを冒頭から皆で読み進めていくというものです。

進捗した内容

  • 1章 チュートリアル
    • 1.7 ウェブサーバ
    • 1.8 残りの項目
  • 2章 プログラム構造
    • 2.1 名前
    • 2.2 宣言
    • 2.3 変数
      • 2.3.1 省略変数宣言

話題に上がった話

1.7 ウェブサーバ

最近並列処理をGoで書こうとして色々困ったりしたのでどうやって処理をしているのか気になりまして、echoサーバーの実装のところでHandleFuncのコードを調査したりしてみました。HandleFuncは中でHandleを呼んでいて、そしてsync.RWMutexを使っていました。これで呼ばれたときにコントロールしてるんですね。

  2116 type ServeMux struct {
  2117      mu    sync.RWMutex
  2118      m     map[string]muxEntry
  2119      hosts bool // whether any patterns contain hostnames
  2120 }

その後、一般的なGoのWeb開発について皆さんどうしているのですかという話題になりまして、素の標準ライブラリだけで開発している人も割といるらしいというのを良く聞いてますという話をしつつ、Web Frameworkを使って開発するケースが多いのではという話をしました。

後で調べたんですが、検索結果を見る限りはEchoが割と良く出てきます。ちょっと前まではRevelをよく見かけたのですがEchoの方が検索順位が良いですね。

2.1 名前

ここで気になったのは、Unicodeで文字とされている物がすべて名前として有効ということになっているという点です。つまり日本語で変数名が付けられると言うことです(エディタの設定等は必要ですが)。試しに以下の様に書いてみても正常に動作します。

package main

import "fmt"

func main() {
    変数だよ := "hello"
    fmt.Println(変数だよ)
}

あとは、名前をキャメルケースで書くパターンが多いという所と、関数の場合は名前の最初が大文字になるかならないかで公開(exported)が決まるというところが話題になりました。

2.3 変数

ここでは、var宣言がtypかexpressionのどちらかが有れば宣言出来ること、あとはよくみる省略変数宣言で、これはあくまで宣言で、=の代入とは違うことが書かれていてこの違いが話題になりました。

ここまで呼んだところで、時間になりました。次回は 2.3.2 ポインタからです。

8
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
2