code: func (dht *DHT) GetPeers(infoHash string) error {
  	if !dht.Ready {
  		return ErrNotReady
  	}
  
  	if dht.OnGetPeersResponse == nil {
  		return ErrOnGetPeersResponseNotSet
  	}
  
  	if len(infoHash) == 40 {
  		data, err := hex.DecodeString(infoHash)
  		if err != nil {
  			return err
  		}
  		infoHash = string(data)
  	}
  
  	neighbors := dht.routingTable.GetNeighbors(
  		newBitmapFromString(infoHash), dht.routingTable.Len())
  
  	for _, no := range neighbors {
  		dht.transactionManager.getPeers(no, infoHash)
  	}
  
  	return nil
  }
docs: // GetPeers returns peers who have announced having infoHash.