Esiste una versione della funzione removeElement in Go per il pacchetto vettoriale come Java ha nella sua classe Vector?

StackOverflow https://stackoverflow.com/questions/1802102

  •  05-07-2019
  •  | 
  •  

Domanda

Sto eseguendo il porting su alcuni codici Java nella lingua Go di Google e sto convertendo tutto il codice, tranne per il fatto che sono bloccato su una sola parte dopo una porta incredibilmente fluida. Il mio codice Go è simile al seguente e la sezione di cui sto parlando è commentata:

func main() {
    var puzzleHistory * vector.Vector;
    puzzleHistory = vector.New(0);
    var puzzle PegPuzzle;
    puzzle.InitPegPuzzle(3,2);
    puzzleHistory.Push(puzzle);

    var copyPuzzle PegPuzzle;
    var currentPuzzle PegPuzzle;

    currentPuzzle = puzzleHistory.At(0).(PegPuzzle);
    isDone := false;
    for !isDone {
        currentPuzzle = puzzleHistory.At(0).(PegPuzzle);
        currentPuzzle.findAllValidMoves();

        for i := 0; i < currentPuzzle.validMoves.Len(); i++ {
            copyPuzzle.NewPegPuzzle(currentPuzzle.holes, currentPuzzle.movesAlreadyDone);
            copyPuzzle.doMove(currentPuzzle.validMoves.At(i).(Move));
            // There is no function in Go's Vector that will remove an element like Java's Vector
            //puzzleHistory.removeElement(currentPuzzle);
            copyPuzzle.findAllValidMoves();
            if copyPuzzle.validMoves.Len() != 0 {
                puzzleHistory.Push(copyPuzzle);
            }
            if copyPuzzle.isSolutionPuzzle() {
                fmt.Printf("Puzzle Solved");
                copyPuzzle.show();
                isDone = true;
            }
        }
    }
}

Se non è disponibile una versione, che credo non ci sia ... qualcuno sa come farei per implementare una cosa del genere da solo?

È stato utile?

Soluzione

Che ne dici di Vector.Delete (i)?

Altri suggerimenti

Al momento Go non supporta operatori di uguaglianza generici. Quindi dovrai scrivere qualcosa che scorre sul vettore e rimuove quello corretto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top