tour.golang.org#36 pic.Show实现的功能

In tour.golang.org , exercice 36 , what this statement pic.Show(Pic) supposed to do?

package main

import "code.google.com/p/go-tour/pic"

func Pic(dx, dy int) [][]uint8 {
    var p = make([]([]uint8), dy)
    for i := 0; i < len(p); i++ {
        p[i] = make([]uint8, dx)
        for j := 0; j < len(p[i]); j++ {
            p[i][j] = uint8((i + j) / 2)
        }
    }
    return p
}

func main() {
    pic.Show(Pic)
}

when I run the example, it just print some characters on the standard output, isn’t supposed to show some picture?

pic.Show() creates the image and encodes it as base64. Here is the code:

func Show(f func(int, int) [][]uint8) {
        const (
                dx = 256
                dy = 256
        )
        data := f(dx, dy)
        m := image.NewNRGBA(image.Rect(0, 0, dx, dy))
        for y := 0; y < dy; y++ {
                for x := 0; x < dx; x++ {
                        v := data[y][x]
                        i := y*m.Stride + x*4
                        m.Pix[i] = v
                        m.Pix[i+1] = v
                        m.Pix[i+2] = 255
                        m.Pix[i+3] = 255
                }
        }
        ShowImage(m)
}

func ShowImage(m image.Image) {
        var buf bytes.Buffer
        err := png.Encode(&buf, m)
        if err != nil {
                panic(err)
        }
        enc := base64.StdEncoding.EncodeToString(buf.Bytes())
        fmt.Println("IMAGE:" + enc)
}

Funny thing is it ends up printing the string "IMAGE:" followed by the base64 encoded string. Seems that play.golang.org parses the output converting this to an img tag. Try the following example: http://play.golang.org/p/RZPqp164eS