@duponin If this is your first programming language, I'd suggest neither -- both of these languages have some issues that e.g. leave out ability to specify constraints that are useful in reasoning (e.g. constness), so if any of them is your first language you need to figure out that such constraints are useful yourself.
If this is just "what would I want for sysadmin-like purposes", then I'd go with Go if you expect to be doing anything nontrivially concurrent, and would have no opinion otherwise.
@duponin One thing that's not immediately obvious about is that as soon as you give something typed as an interface to someone, they can change their behaviour based on whether it happens to have some other method on it (so, if you use any interface type, we enter the world of duck typing immediately).
So, e.g. if you give someone an io.Reader, they can use RTTI to ask if it has a Frob() method, and change their behaviour based on this. It's also sadly considered acceptable to barely (in case of checking if a Writer is also a Closer to Close it if it is) document it or even don't document that at all (if checking whether a Writer has a ReadFrom method). This makes embedding a type (i.e. creating a struct with an unnamed field) ~always potentially dangerous, because you might be embedding some methods from the inner type that you'd have wanted to intercept if you knew of them.