亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何用兩次手動調用替換簡單的兩匝循環

如何用兩次手動調用替換簡單的兩匝循環

Go
哈士奇WWW 2023-08-14 17:18:15
這是代碼: https: //play.golang.org/p/Sizbc3uJt_c我嘗試替換這個簡單的循環for c := n.FirstChild; c != nil; c = c.NextSibling {    indent(space+"   ", c)}產生html   head   body      a         1      a         1      div         a            2         a            3當我嘗試這個時if n.FirstChild != nil {    indent(space+"   ", n.FirstChild)}if n.FirstChild != nil && n.FirstChild.NextSibling != nil {    indent(space+"   ", n.FirstChild.NextSibling)}輸出只有一半html   head   body      a         1      a         1當我嘗試這個時if n.FirstChild != nil {    indent(space+"   ", n.FirstChild)}if n.NextSibling != nil {    indent(space+"   ", n.NextSibling)}輸出已完成,但縮進不同。結果是html   head      body         a            1            a               1               div                  a                     2                     a                        3
查看完整描述

1 回答

?
白板的微信

TA貢獻1883條經驗 獲得超3個贊

如果您想使用您建議的具有奇怪縮進的第二組代碼,那么解決方案如下:


package main


import (

    "fmt"

    "log"

    "strings"


    "golang.org/x/net/html"

)


func main() {

    r := strings.NewReader(`<a href="test1.html">1</a><a href="test1.html">1</a><div><a href="test2.html">2</a><a href="test3.html">3</a></div>`)

    doc, err := html.Parse(r)

    if err != nil {

        log.Fatalln(err)

    }

    indent("", doc)

}


func indent(space string, n *html.Node) {

    fmt.Println(space, n.Data)


    if n.FirstChild != nil {

        indent(space+"   ", n.FirstChild)

    }

    if n.NextSibling != nil {

        indent(space, n.NextSibling)

    }

}

您只需刪除+"    "縮進調用的額外內容n.NextSibling,以便同級節點不會比其先前的同級節點被推出得更遠。


查看完整回答
反對 回復 2023-08-14
  • 1 回答
  • 0 關注
  • 141 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號