我正在尝试构建一个简单的Web服务器。我想用\n
替换所有<br>
。
我想为此使用bytes
,因为我的页面正文存储为[]byte
。
为此,我使用bytes.ReplaceAll()
。但它一直在说这是对未定义标识符的引用。
有人可以告诉我为什么吗?我在在线编译器中尝试了完全相同的方法,并且工作正常。我想念图书馆吗?
请参见下面的代码:
import (
"bytes"
"html/template"
"io/ioutil"
"log"
"net/http"
"regexp"
)
type Page struct {
Title string
Body []byte
}
func editHandler(w http.ResponseWriter, r *http.Request, title string) {
p, err := loadPage(title)
if err != nil {
p = &Page{Title: title}
}
// THE LINE THAT CAUSES TROUBLE
p.Body = bytes.ReplaceAll(p.Body, []byte("\n"), []byte("<br>"))
renderTemplate(w, "edit", p)
}
答案 0 :(得分:6)
bytes
软件包是标准库的一部分,因此如果您拥有go
工具,则不太可能没有。
但是请注意,bytes.ReplaceAll()
中添加了Go 1.12,因此,如果您使用的是较旧的Go SDK,则此功能将不可用。
执行go version
进行查找。从官方网站获取最新的Go:https://golang.org/dl/
答案 1 :(得分:0)
进一步到icza的answer,
为了使1.12
之前的Go版本受益,以下是等效的:
bytes.ReplaceAll(a, b, c)
和
bytes.Replace(a, b, c, -1)
请参见ReplaceAll