If you already have the IDs of the proteins of which you want to get the GO annotations maybe you find this tool useful. Bio4j GO Tools is an application that retrieves the GO annotations of a set of proteins (provided the Uniprot accessions).
The output file format is a XML file that includes
The GO terms of each protein
How many times each term appears in the sample (how many proteins in the sample have associated such term)
I tried to use Blast2Go to find GO terms but it's quite slow. So the approach I am currently used is to blast all my sequences on swiss-prot and find GO terms with a python script I wrote. It finds same GO terms as AmiGo but faster.
So, to answer your question, I think you can use AmiGo if you want to find GO terms related to a swiss-prot id. But if you have lots of swiss-prot ids it going to be reeeally long.
Your question is important from a practical perspective. A direct transfer of GO annotation from your BLAST hit is possible. But it may not be a reliable approach, especially in case of remote homologs.
If you are looking at the GO annotation for a gene product with its sequence available in the databases : best way is to look for their GO evidence codes. This is a schema to understand how the annotation is assigned to the gene product. Most of them are associated with in-silico annotations, yet they will give you a clear idea about the available functional understanding of the gene product. If your sequence is new, or something that you sequenced as suggested by Nico you may start with the tools like Amigo or Blast2Go.