# First Class Functions in Go
30 Jun 2011
Tags: codewalk, function, technical
Summary: Announcing a new Go codewalk, exploring first class functions.
OldURL: /first-class-functions-in-go-and-new-go

Andrew Gerrand

##

Programmers new to Go are often surprised by its support for function types,
functions as values, and closures.
The [First Class Functions in Go](https://golang.org/doc/codewalk/functions/)
code walk demonstrates these features with a simulation of the dice game
[Pig](http://en.wikipedia.org/wiki/Pig_(dice)).
It is a pretty program that uses the language to great effect,
and a fun read for Go beginners and veterans alike.

More resources are available at [golang.org](https://golang.org/doc/docs.html).
