3 回答

TA貢獻(xiàn)1850條經(jīng)驗(yàn) 獲得超11個(gè)贊
如果你想忽略格式,你可以使用strings.Fields.
output := strings.Fields(`digraph sitemap {
"http://www.example.com/"
-> {
"http://www.example.com/foo",
"http://www.example.com/bar",
"http://www.example.com/baz"
}
}`)
actual := strings.Fields(Dot(input))
if !equal(output,actual) {
// ...
}
其中 equal 是比較兩個(gè)切片的簡(jiǎn)單函數(shù)。

TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超9個(gè)贊
最簡(jiǎn)單的解決方案是在指定預(yù)期輸出時(shí)在測(cè)試中使用相同的縮進(jìn)(與您在模板中使用的相同)。
你有:
output := `digraph sitemap {
"http://www.example.com/"
-> {
"http://www.example.com/foo",
"http://www.example.com/bar",
"http://www.example.com/baz"
}
}`
將其更改為:
output := `digraph sitemap {
"http://www.example.com/"
-> {
"http://www.example.com/foo",
"http://www.example.com/bar",
"http://www.example.com/baz"
}
}`
請(qǐng)注意,例如,最后一行沒(méi)有縮進(jìn)。當(dāng)您使用原始字符串文字時(shí),包括縮進(jìn)字符在內(nèi)的每個(gè)字符都是原樣文字的一部分。
創(chuàng)建正確的、未縮進(jìn)的原始字符串文字的步驟
畢竟,這完全是一個(gè)非編碼問(wèn)題,而是編輯器自動(dòng)格式化和定義原始字符串文字的問(wèn)題。一種簡(jiǎn)單的正確方法是首先編寫(xiě)一個(gè)空的原始字符串文字,向其添加一個(gè)空行并清除編輯器插入的自動(dòng)縮進(jìn):
output := `
`
當(dāng)你有這個(gè)時(shí),在結(jié)束反引號(hào)之前復(fù)制粘貼正確的輸入,例如:
output := `
digraph sitemap {
"http://www.example.com/"
-> {
"http://www.example.com/foo",
"http://www.example.com/bar",
"http://www.example.com/baz"
}
}`
最后一步,從原始字符串文字的第一行刪除換行符,您將獲得正確的原始字符串文字:
output := `digraph sitemap {
"http://www.example.com/"
-> {
"http://www.example.com/foo",
"http://www.example.com/bar",
"http://www.example.com/baz"
}
}`
一旦你有了這個(gè),gofmt編輯器的運(yùn)行或自動(dòng)格式化就不會(huì)再混亂了。
更新:
我檢查了你更新的測(cè)試結(jié)果,在你得到的結(jié)果中,第一行之后有一個(gè)空格:digraph sitemap {,第三行之后也有一個(gè)空格:-> {,但是你沒(méi)有將它們添加到你的預(yù)期輸出中。也可以將它們添加到您的預(yù)期輸出中,或者從模板中刪除這些空格!比較字符串時(shí),它們是按字節(jié)比較的,每個(gè)字符(包括空格)都很重要。
要從模板中刪除這些額外的空格:
dotTmpl := `digraph sitemap { {{- range .}}
"{{.URL}}"
-> { {{- $n := len .Anchors}}{{range $i, $v := .Anchors}}
"{{.}}"{{if eq (plus1 $i) $n}}{{else}},{{end}}{{end}}
} {{end}}
}`
注意使用{{-。這是為了修剪模板操作周?chē)目臻g,這是在Go 1.6中添加的。

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超7個(gè)贊
問(wèn)題是有一個(gè)額外的空間。在那之后的格式化文本中{似乎是你的問(wèn)題。您可以通過(guò)將格式字符串更改為此來(lái)修復(fù)它
`digraph sitemap {{{range .}}
"{{.URL}}"
-> {{{$n := len .Anchors}}{{range $i, $v := .Anchors}}
"{{.}}"{{if eq (plus1 $i) $n}}{{else}},{{end}}{{end}}
}{{end}}
}`
- 3 回答
- 0 關(guān)注
- 210 瀏覽
添加回答
舉報(bào)