Not a native speaker, but I have been taught that when "o" is in the first syllable, it typically is not stressed, and sounds more like the "o" in the word "dog." For example
but many exceptions to this exist. For example, in the following words:
о́зеро, ло́шадь, ко́шка, во́дка
the stress is on the first syllable, and therefore, the "o" sounds like the "o" in the word "go." The same can be said of words having just one syllable, such as
In words that have more than one "o," the only "o" that gets the long "o" sound (as in "go") is the one that is stressed. In the following, the only "o" receiving stress is the final "o."
If the syllable receiving stress is not one with "o," none receive the long "o" sound. For example:
In the end, I think you just have to learn them as you go, but hope this was helpful in some way.
[Note: Typically, you won't see these words with the accent marks. I simply added them to facilitate understanding.]
One final note: After writing this, I came upon a post later that describes pronunciation just a bit more. It was posted by slepton.
If the 'o' becomes BEFORE the stressed syllable in the word it is pronounced as 'a'. If the 'o' has the stress on it it is pronounced as 'o'. If it comes AFTER the stressed syllable it is pronounced as 'uh'.