第1回大阪Go勉強会

書くのが遅くなりましたが、9/17に開催された大阪Go勉強会に参加させてもらいました。

第1回 大阪Go勉強会 on Zusaar

資料はこちら
https://github.com/todoa2c/hango/blob/master/vol01.md

グランフロントがでかすぎて辿り着ける気がしなかったので最初から受付に場所を聞いていきました。

様子はこんな感じです。
第1回 大阪Go勉強会 - Togetter


事前にA Tour of Goをさらっと流してたんですが、いざハンズオンとなるとなかなか書けず。

5つ課題があったうち、最初の2つを不完全ながらできたかな、といった感じでした。

fizzbuzz

package main

import (
	"fmt"
	"strconv"
)

func main() {
	l := make([]string, 100)
	for i, _ := range l {
		n := i + 1
		switch {
		case n%15 == 0:
			l[i] = "FizzBuzz"
		case n%5 == 0:
			l[i] = "Buzz"
		case n%3 == 0:
			l[i] = "Fizz"
		default:
			l[i] = strconv.Itoa(n)
		}
	}
	for _, v := range l {
		fmt.Println(v)
	}
}

wordcount。mapの値は0で初期化されるので、存在チェックしなくてもよさそう。

package main

import (
	"bufio"
	"fmt"
	"os"
	"strings"
)

func main() {
	scanner := bufio.NewScanner(os.Stdin)

	m := make(map[string]int)

	for scanner.Scan() {
		text := scanner.Text()

		// TODO replace comma, period

		for _, word := range strings.Fields(text) {
			_, ok := m[word]
			if ok {
				m[word] += 1
			} else {
				m[word] = 1
			}
		}
	}
	// TODO sort
	for word, count := range m {
		fmt.Println(word, count)
	}
}

Go言語に関してはgoroutine、select、channel辺りが使いこなせると面白そうでした。

懇親会もいろいろ話ができて楽しかったのでまた参加したいです。