Existe uma versão da função removeElement em Go para o pacote vector como Java tem em sua classe Vector?
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?
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