Существует ли версия функции removeElement в Go для векторного пакета, подобная той, которую Java имеет в своем векторном классе?
Вопрос
Я переношу некоторый Java-код на язык Go от Google и конвертирую весь код, за исключением того, что застрял только на одной части после удивительно плавного переноса.Мой код Go выглядит следующим образом, и раздел, о котором я говорю, закомментирован:
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;
}
}
}
}
Если доступной версии нет, а я полагаю, что ее нет...кто-нибудь знает, как я мог бы реализовать такую вещь самостоятельно?
Решение
Как насчет Vector.Удалить (i )?
Другие советы
Прямо сейчас Go не поддерживает универсальные операторы равенства.Таким образом, вам придется написать что-то, что повторяет вектор и удаляет правильный.
Не связан с StackOverflow