Sunday, September 7, 2014

Go tour #41 #44

気が向いた時にぼちぼち進めているけど、進みが遅いんじゃ~。なんか変なウイルスにかかって調子悪いし仕方ないね。(まさかデングなんとかじゃないよね…;ω;)

tour #41

Word Count関数。mapの使い方のおさらいだね。しかし、このmapの定義、違和感が凄いんだけど…いや、いいけどさ。

package main

import (
    "strings"
    "code.google.com/p/go-tour/wc"
)

func WordCount(s string) map[string]int {
    m := make(map[string]int)

    for _, value := range strings.Fields(s) {
        m[value] = m[value] + 1
    }

    return m
}

func main() {
    wc.Test(WordCount)
}

toue #44

フィボナッチ数列~。関数はクロージャだってことのおさらい。

package main

import "fmt"

func fibonacci() func() int {
    var f0, f1 int = 0, 1
    return func() int {
        fn := f0 + f1
        f0 = f1
        f1 = fn
        return fn
    }
}

func main() {
    f := fibonacci()
    for i := 0; i < 10; i++ {
        fmt.Println(f())
    }
}

関数を返り値として返す。返される関数は関数外の変数(上のf0, f1)とバインドしている。新たにfibonacci()により関数を取得しても既存の関数にバインドした変数とは被らない。

…よく出来てるなと思った。確かjavascriptでもこんな書き方したな。あっちは変数の扱いどうだったかな…。

No comments:

Post a Comment