func (l *PeerList) Get(prevSelected map[string]struct{}) (*Peer, error) {
	peer, err := l.GetNew(prevSelected)
	if err == ErrNoNewPeers {
		l.Lock()
		peer = l.choosePeer(nil, false /* avoidHost */)
		l.Unlock()
	} else if err != nil {
		return nil, err
	}
	if peer == nil {
		return nil, ErrNoPeers
	}
	return peer, nil
}
func (l *PeerList) Get(prevSelected map[string]struct{}) (*Peer, error) {
	peer, err := l.GetNew(prevSelected)
	if err == ErrNoNewPeers {
		l.Lock()
		peer = l.choosePeer(nil, false )
		l.Unlock()
	} else if err != nil {
		return nil, err
	}
	if peer == nil {
		return nil, ErrNoPeers
	}
	return peer, nil
}
func ( l * PeerList ) Get ( prevSelected map [ string ] struct { } ) ( * Peer , error ) { peer , err := l . GetNew ( prevSelected ) if err == ErrNoNewPeers { l . Lock ( ) peer = l . choosePeer ( nil , false /* avoidHost */ ) l . Unlock ( ) } else if err != nil { return nil , err } if peer == nil { return nil , ErrNoPeers } return peer , nil }
// Get returns a peer from the peer list, or nil if none can be found,
// will avoid previously selected peers if possible.
Get returns a peer from the peer list or nil if none can be found will avoid previously selected peers if possible .