In general, I think it's worth taking a bit of time to establish exactly what it is you expect to get from mentoring, and how you and the mentor are going to work together to achieve that. For example, if you want to get and pass the interview for your dream job, that's an objective you can both work towards. Or maybe your goal is just something "feel confident writing non-trivial Go projects from scratch". You can then agree a plan of action that gets you there.
Next, establish how you're going to work together. A regular meeting is probably best, whether that's in person or by remote. Find a time that works for both of you. If you're working on a real-life project, as opposed to an exercise, will both you and the mentor contribute to it individually, as well as pairing on it together? Or will the mentor just be giving you code reviews? Will the mentor give you homework, exercises, and reading to do in between sessions? If so, agree what the expectations are. Don't assume you will have any free time at all to work on this stuff—most don't!
Finally, and this may seem obvious, as the mentee, this process is not always going to be easy for you. You are basically surrendering yourself to someone else (possibly a stranger) and saying "You know better than me. Please teach me." If you're an engineer, for example, that probably doesn't come naturally to you. It doesn't to me.
When you find yourself feeling frustrated, as you may well do, or even angry, try to keep calm. If the mentor's advice seems to make no sense to you, ask them to explain, and keep asking until you understand it. If you understand it, but don't agree with it, don't argue; this is tiresome for both parties. Default to assuming the mentor is right and you are wrong. After all, you're here because they know more than you do. This is bound to mean that some of the things you think you know are actually wrong, isn't it?
Especially with respect to reviewing code, the further in advance you can provide the code to the mentor, the better.