Есть ли версия функции removeElement в Go для векторного пакета, как у Java в своем классе Vector? - PullRequest
1 голос
/ 26 ноября 2009

Я портирую некоторый Java-код на язык Google Go и конвертирую весь код, за исключением того, что застрял только на одной части после удивительно гладкого порта. Мой код 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;
            }
        }
    }
}

Если нет доступной версии, которой, как мне кажется, нет ... Кто-нибудь знает, как мне поступить, если бы я сам реализовал такую ​​вещь?

Ответы [ 2 ]

0 голосов
/ 26 ноября 2009

Сейчас Go не поддерживает универсальные операторы равенства. Поэтому вам нужно написать что-то, что перебирает вектор и удаляет правильный.

0 голосов
/ 26 ноября 2009

Как насчет Vector.Delete (i)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...