Goメモ
Readers
データストリームを読み込むio.Readerストリームが存在するらしい。
8byteとずつ読み込ませて表示するソースコードが下記。
package main import ( "fmt" "io" "strings" ) func main() { r := strings.NewReader("Hello,Reader!") b := make([]byte, 8) for { n, err := r.Read(b) fmt.Printf("n = %v err = %v\n", n, err, b) fmt.Printf("b[:n] = %q\n", b[:n]) if err == io.EOF { break } } }
8byteの配列を確保している。
b := make([]byte, 8)
r.Readで8byteずつ読み込み、読み込んだ文字数、errが返ってきていないか、配列の中身を表示している。
n, err := r.Read(b) fmt.Printf("n = %v err = %v\n", n, err, b) fmt.Printf("b[:n] = %q\n", b[:n])
最後にerrの値がEOF(つまり文字がなくなったら)ならfor文を抜ける。
if err == io.EOF { break }
image
imageインターフェースがあるらしいなんのために使うんだろう。
package main import ( "fmt" "image" ) func main() { m := image.NewRGBA(image.Rect(0, 0, 100, 100)) fmt.Println(m.Bounds()) fmt.Println(m.At(0, 0).RGBA()) }
goroutines
goroutineというものが出てきた。
どういう動きをするかは現段階ではわかっていない。
package main import ( "fmt" "time" ) func say(s string) { for i := 0; i < 5; i++ { time.Sleep(199 * time.Millisecond) fmt.Println(s) } } func main() { go say("world") say("hello") }