1

我正在将一些 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;
            }
        }
    }
}

如果没有可用的版本,我相信没有......有谁知道我将如何自己实施这样的事情?

4

2 回答 2

0

Vector.Delete(i) 怎么样?

于 2009-11-26T08:18:20.800 回答
0

目前 Go 不支持泛型相等运算符。因此,您必须编写一些迭代向量并删除正确向量的内容。

于 2009-11-26T08:40:10.570 回答