Is a single md5 hash a good way to generate an AES key? This site says how to encrypt data using a password in go using AES-GCM.
It says the following:

When encrypting and decrypting data, it is important that you are using a 32 character, or 32 byte key. Being realistic, you’re probably going to want to use a passphrase and that passphrase will never be 32 characters in length.
To get around this, you can actually hash your passphrase using a hashing algorithm that produces 32 byte hashes. I found a list of hashing algorithms on Wikipedia that provide output lengths. We’re going to be using a simple MD5 hash. It is insecure, but it doesn’t really matter since we won’t be storing the output.

Is this true?
So fine, I don't mind using something a bit more secure than MD5, it's easy to replace MD5 with SHA-2.
But another thing hit me:

Why is something like bcypt/scrypt not required?
Is AES slow enough to prevent a brute-force attack?
Assuming that the password/phrase is in fact a password/phrase, and does not already contain sufficient complexity to prevent guessing (e.g. is not a cryptographically strong random string)...


  Is this true?


No. An attacker will simply guess at the password, and a fast hash function will help them to guess faster. An attacker can try a truly ridiculous number of md5 hashes per second, and will certainly break any password/passphrase that was not generated to be cryptographically strong.


  Why is something like bcypt/scrypt not required?


Slow hashing is required, and the information in the article is not good advice. Choosing MD5 because it offers the right digest size out of the box is not justifiable: Stronger 256-bit hash functions exist (e.g. SHA256), and a larger hash digest could easily be truncated down to 256 bits

A cryptographic hash function is not appropriate for use on passwords/passphrases. 


  Is AES slow enough to prevent a brute-force attack?


No, and it is not the ciphers responsibility to be slow to prevent brute-force attacks on the key. Assuming that they key is strong enough to be called a key (e.g. a uniformly random bit string), then having a slow cipher is completely non-productive. 

So the responsibility for being slow to prevent guessing attacks falls to a step before encryption takes place, namely, the key derivation step. Functions such as Bcrypt/Scrypt/Argon2 are explicitly designed for the purpose.

Alternatively

If the passphrase was generated randomly and designed to possess sufficient entropy, then using a slow key derivation process is not really necessary or beneficial. In such a case, using something like HKDF would probably be the most appropriate.

In any case

Selecting MD5 from a list because it seems fine is not a good sign...