go(golang)勉強会 #1をしました
2018/02/13(月)、@tikidunponさんとKazuki Oharaさんと一緒に運営するgo(golang)勉強会が始まりました。
https://go-golang.connpass.com/event/78316/
レポートしたいと思います。
勉強会概要
Go言語の基本的な文法を公式ドキュメントA Tour of Goを読みながら進める勉強会です。
時間は80分程度で気になる所を質問したり、一緒に手を動かしてgoの知識を深めていきます。
ただの講義形式ではありません。
ファシリテーターの説明を受けて疑問があればその都度質問を受け付け、実際にコードを書いてどんな動きをするのかを見ていく勉強会です。
今回のファシリテーターは@tikidunponさんでした。
内容はgo tourのリストの下記項目まで進みました。
https://go-tour-jp.appspot.com/list
- Welcome!
- Packages, variables, and functions.
- Flow control statements: for, if, else, switch and defer
資料
勉強会内容
どんな様子だったのかをTwitterから抜粋
本日開催です!みんなでGo勉強しましょーhttps://t.co/10k4jvnGTI#read_go
— SatoTakeshi (@hatakenokakashi) February 13, 2018
準備完了#read_go pic.twitter.com/3OFmfVsxKr
— SatoTakeshi (@hatakenokakashi) February 13, 2018
Goとは?https://t.co/J1nyirVzud
— SatoTakeshi (@hatakenokakashi) February 13, 2018
#read_go
GOが目指すものhttps://t.co/J1nyirVzud#read_go
— SatoTakeshi (@hatakenokakashi) February 13, 2018
go format
— SatoTakeshi (@hatakenokakashi) February 13, 2018
書く人によってばらつきがないようにしている。#read_go
go formatはTabっぽい
— SatoTakeshi (@hatakenokakashi) February 13, 2018
戦争起きる?#read_go
import onにしてgo formatにすると使ってないインポートを消してくれる#read_go
— SatoTakeshi (@hatakenokakashi) February 13, 2018
公式のコードレビュー方針https://t.co/dWP162I97J#read_go
— SatoTakeshi (@hatakenokakashi) February 13, 2018
エイリアスをつけれる https://t.co/4j9vlxdjc2 #read_go #go pic.twitter.com/SdGln42N9g
— SatoTakeshi (@hatakenokakashi) February 13, 2018
今日はこっちに。#read_go
— ワニ@tmk (@alligator_tama) February 13, 2018
先頭大文字にすると他のパッケージからアクセスできるパブリックな値になる。
— SatoTakeshi (@hatakenokakashi) February 13, 2018
へー
func main() {
fmt.Println(math.Pi)
}#read_go
:=はvar宣言のショートカット https://t.co/skxXPI1xTV #read_go #go pic.twitter.com/zVkogs3i93
— SatoTakeshi (@hatakenokakashi) February 13, 2018
GOは:=をよく使ってConstの定数はそんなにつかってない。
— SatoTakeshi (@hatakenokakashi) February 13, 2018
意外!SwiftやES6だとletやconstつかって変数は宣言後変更できないようにしようって言ってるのに!#read_go
var ()で宣言ができる https://t.co/Z9OhhJwaNz #read_go #go pic.twitter.com/OnA5ax7dmn
— SatoTakeshi (@hatakenokakashi) February 13, 2018
Goは継承がない#read_go
— SatoTakeshi (@hatakenokakashi) February 13, 2018
constだと256bitの値を表現できる#read_go
— SatoTakeshi (@hatakenokakashi) February 13, 2018
定義を上からしなくてもよい。Smallでしたの方に定義したBit定数を使える https://t.co/xmvOaqp00J #read_go #go pic.twitter.com/8kpTjpPzN5
— SatoTakeshi (@hatakenokakashi) February 13, 2018
[Go の定数の話 - Qiita](https://t.co/GC2JEwbGBt)#read_go
— SatoTakeshi (@hatakenokakashi) February 13, 2018
constの値はuntyped型
— SatoTakeshi (@hatakenokakashi) February 13, 2018
型が決まってない型。
定数自体に型が決まっているんだ。
不思議#read_go
なるほど、constをそんなに使わないわけだ。型がないってことはちゃんと考えないとおかしなことになってしまう。
— SatoTakeshi (@hatakenokakashi) February 13, 2018
値書き換えを防ぐ意味でGo言語はconstを使ってないんだな。#read_go
iotaで連番を振れるhttps://t.co/FRNXP0hrgZ#read_go
— SatoTakeshi (@hatakenokakashi) February 13, 2018
iotaの語源ねぇ。なるほどhttps://t.co/OhmWtvG9Nk#read_go
— ワニ@tmk (@alligator_tama) February 13, 2018
簡単な実装. https://t.co/lXHjplpR5r #read_go #go pic.twitter.com/VBZj9X7TJw
— SatoTakeshi (@hatakenokakashi) February 13, 2018
Goの平方根求める実装。https://t.co/LKzhF82Lx8#read_go
— SatoTakeshi (@hatakenokakashi) February 13, 2018
今の言語と比較するのでなく、Go blogを頭から読むと無駄な機能を絞っている所や設計思想が分かって良いと思います。 #read_go https://t.co/oweMblemT3
— tikidun (@tikidunpon) February 13, 2018
ここにも色々言語設計上の選択理由が書いてありそう(読んでない #read_gohttps://t.co/z7VeDAxA9R
— Kazuki Ohara (@yamoridon) February 13, 2018
さいごに
GoのConstが型がない型というのが意外でした。
他の言語のようにイミュータブルな変数を使わないのも納得です。
なかなかGo楽しそうです。
次回は私がファシリテーターの予定です。
次回もご参加ください!