Existe-t-il une version de la fonction removeElement dans Go pour le package vectoriel que Java possède dans sa classe Vector?

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

  •  05-07-2019
  •  | 
  •  

Question

Je porte un peu de code Java dans le langage Google de Google et je convertis tout le code, sauf que je ne suis bloqué que sur une partie après un port incroyablement fluide. Mon code Go ressemble à ceci et la section dont je parle est commentée:

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;
            }
        }
    }
}

S'il n'y a pas de version disponible, ce qui, je le crois, n'existe pas ... est-ce que quelqu'un sait comment j'agirais pour mettre en œuvre une telle chose moi-même?

Était-ce utile?

La solution

Qu'en est-il de Vector.Delete (i)?

Autres conseils

Pour l'instant, Go ne prend pas en charge les opérateurs d'égalité génériques. Vous devrez donc écrire quelque chose qui itérera sur le vecteur et supprimera le correct.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top