In Go a function pointer points to a block of memory whose first word
contains a pointer to the actual code and whose subsequent words
contain the function closure (see
https://golang.org/s/go11func).
When calling the function, a pointer to that block of memory is always
passed in a special register, so that the function can access its
closure if necessary. On amd64, the closure pointer is passed in the
DX register.
Ian