Indeed. C-style declarations have always been intuitionally-opaque to me (I've always had to concentrate on them to get what they're saying), but the Go example:
f func(func(int,int) int, int) func(int, int) int
is a simple mechanical transformation away from being a Haskell declaration:
f :: ((Int, Int) -> Int, Int) -> (Int, Int) -> Int