2016-08-22 113 views
-2

我想追加一個指向slice的指針。是否有可能..?在Partentnode.children中是一個片段,我想用X作爲指針追加它。在Golang中追加一個指向Slice的指針

https://play.golang.org/p/ghWtxWGOAU

func Tree(Parentnode *Node) { 
    if IsvisitedNode(Parentnode.currentvalue - 1) { 
     m := MovesArray[Parentnode.currentvalue-1] 
     for j := 0; j < 8; j++ { 
      if m[j] != 0 { 
       var X *Node 
       X.parentnode = Parentnode 
       X.currentvalue = m[j] 
       if IsvisitedNode(m[j]) { 
        Parentnode.children = append(Parentnode.children, *X) 
        Tree(X) 
       } 
      } 
     } 
    } 
} 
+0

索引'j'在切片'm'中不存在。我會添加一些打印語句來查看它出錯的地方。 – RickyA

+0

另外'for j:= 0; j <8; j ++ {' - >'m [j]'如果你不是絕對確定有'8'或更多索引的'm',那麼你會問。更好的是'對於currval:= range m {' – RickyA

+0

在變量m中肯定有8個值,包括負位置的零,這就是爲什麼我包含語句m [j]!= 0的原因。 @RickyA – Manu

回答

1

你必須通過一個錯誤了。 主要設置Y.currentvalue = 1。 然後在Tree當前值走到64

X.currentvalue = m[j] 
fmt.Printf("cv: %v\n",X.currentvalue) //walks to 64 
if IsvisitedNode(m[j]) { 

一個在IsvisitedNode您測試對visithistory有64個索引該索引,從而停止在指數63 - >指數誤差

var visithistory [64]bool 

func IsvisitedNode(position int) bool { 
    if visithistory[position] == true { 

事情工作,如果你設置var visithistory [65]bool,但我認爲你需要這裏有點反思你的邏輯。

+0

這就是我爲IsVisitedNode函數使用currentvalue-1的原因。 @RickyA – Manu

+0

在我的第一個代碼塊中嘗試打印語句 – RickyA

+0

我嘗試過,但是在打印這三個值後程序退出。 – Manu