Yes you can have Go listen directly on that IP and it will work fine, there are other uses for nginx, like caching and serving static files.
Also you could have go listen on http.ListenAndServe("127.0.0.1:9020", nil)
and proxy from nginx to it:
server {
listen 123.123.123.123:80;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:9020/;
}
}
It takes few minutes of testing.
So ask yourself this, do you need nginx to cache some files or serve static files for you? if yes, use it in front of go, if not, use go directly.
Also if you were to use nginx, the proxy method is probably faster than fcgi.