Retrieve all genes for a specific gene ontology
You can use BioMart to filter by your GO term and get the genes as attributes. BioMart is ontology-aware so will pull out all genes associated with your term and with any of its child terms.

There is no need to look up the GO child terms as BioMart already deals with this. A term may have more than one parent term, but if it's associated with a gene then everything about that term is associated with the gene. The term is not associated with the gene via parent X or parent Y, it means that both are relevant. So if the child term is associated with the gene, then the parent term is by proxy.

If you're not already familiar with BioMart, there's a help video.

Here's a BioMart query that gets you exactly what you need in human using the web interface

If you want to work with the R interface to biomaRt, here's some documentation and this is the identical query to above:

library(biomaRt)
ensembl=useEnsembl(biomart="ensembl", dataset='hsapiens_gene_ensembl')
getBM(attributes = c('ensembl_gene_id','external_gene_name', 'go_parent_term', 'name_1006'), 
      filters = 'go', 
      values = 'GO:0030098', 
      mart = ensembl)