Nowadays, building RESTful APIs in Go is a fairly streamlined process. If you don't mind a little bit of elbow grease (for example, using regular expressions to manually extract parameters from request paths), you can build your very own HTTP router by leveraging the functionality offered by http.Mux, a component that ships with the Go standard library.
While building your own router from scratch would undoubtedly be a great learning experience, you should probably save quite a bit of time (and effort) and simply use one of the popular, battle-tested router packages such as gorilla-mux [5] or HttpRouter [3].
On the other hand, if fully-fledged web frameworks (combining a router, middleware, and perhaps an ORM into a single package) are your cup of tea, you will be positively surprised to find out that there are a plethora of packages to choose from! An indicative list of popular (based on the number of stars on GitHub) web framework packages would definitely include buffalo [1], revel [4], and gin-gonic [10].
All of these packages have one thing in common: they are all built on top of the net/http package. If you happen to be building APIs that can potentially receive a large (that is, more than one million requests per server) volume of concurrent requests, you may find that the net/http package actually becomes a bottleneck that caps your API's throughput.
If you ever find yourself in this predicament and don't mind programming against a slightly different API than the one offered by the net/http package, you should take a look at the fasthttp [8] package.