Existe uma versão da função removeElement em Go para o pacote vector como Java tem em sua classe Vector?

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

  •  05-07-2019
  •  | 
  •  

Pergunta

Eu sou portagem sobre algum código Java em linguagem Go do Google e eu converter todo o código só que eu estou preso em apenas uma parte após uma porta incrivelmente suave. Meu vai olhares código como este ea seção que eu estou falando é comentado:

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 não houver nenhuma versão disponível, que eu acredito que não há ... Alguém sabe como eu iria sobre a implementação de uma coisa dessas por conta própria?

Foi útil?

Solução

Como cerca Vector.Delete (i)?

Outras dicas

Agora Go não suporta operadores de igualdade genéricas. Então você vai ter que escrever algo que itera sobre o vetor e remove o correto.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top