This is a topic that has confused me in the past. In the simple case where you build a Go executable and get requests from it directly, your Go application *is* your web server. However, it's common in industry to put a system like nginx in front of your Go executable that takes care of serving static content like images, JavaScript, CSS, and so on to the user without consulting your Go application at all. Then, when this web server gets a request on and endpoint that it doesn't know how to serve, like an API call, it will forward that request to your Go application.
With a setup like this, you're able to concentrate on writing business logic in Go and configure caching and static resource management elsewhere. In these cases, the application in front of your Go application is the "web server" because it is in charge of directly serving resources to the client. Your Go application might be called the "web application" because it is in charge of doing application-specific tasks. It isn't strictly necessary to adopt this format just to cache static resources, but if your needs become more complicated in the future it might be something worth considering :)