从准备好的语句中检索值并在Go中选择查询

I'm unsure how to retrieve values from a prepared statement since result only returns information about the transaction.

statement, err := txn.Prepare(`SELECT id, password FROM public.user WHERE email = $1`)
result, err = stmt.Exec(email, password, email)

I understand Query() and QueryRow() have the intended result, but from what I understand, they are unsafe. Any help on this is appreciated, thanks.

They are perfectly safe, you use it the same way, exec is really just for inserts:

stmt, err := txn.Prepare(`SELECT id, password FROM public.user WHERE email = $1`)
rows, err := stmt.Query(email)

Check: https://code.google.com/p/go-wiki/wiki/SQLInterface