Different shells have different syntax for achieving this.
In bash, you use variable indirection:
printf '%s\n' "${!env_name}"
In ksh, you use nameref aka typeset -n:
nameref env_name=GOPATH
printf '%s\n' "$env_name"
In zsh, you use P parameter expansion flag:
print -rl -- ${(P)env_name}
In other shell, you must use evaleval, which put you under many security implications if you're not sure the variable content is safe:
eval "echo \"\$$name_ref\""