首页 > 解决方案 > 引用未定义的标识符 bytes.ReplaceAll

问题描述

我正在尝试构建一个简单的网络服务器。我想全部替换\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)
}

标签: goreplaceslicereplaceall

解决方案


该软件包是标准库的一部分,因此如果您有可用的工具bytes,您不太可能没有它。go

但请注意,这bytes.ReplaceAll()是在Go 1.12中添加的,因此如果您有较旧的 Go SDK,您将无法使用此功能。

执行go version以找出。从官网获取最新的 Go:https ://golang.org/dl/


推荐阅读