Golang中未解析的引用问题如何解决
Golang中未解析的引用问题如何解决 我不太理解"未解析引用"是什么意思。这段代码中并没有指针啊?
text = strings.ToLower(text)
err, re := regexp.Compile("\\w+")
if err != nil {
log.Fatal(err)
}
sentence := re.FindAllString(re, -1)
3 回复
嗨 @Dj_Sparks,
我认为您原本想写的是以下代码,因为您不小心将 err 和 re 写反了,并且向 FindAllString 传递的是 re 而不是 text:
text = strings.ToLower(text)
re, err := regexp.Compile("\\w+")
if err != nil {
log.Fatal(err)
}
sentence := re.FindAllString(text, -1)
在您的代码中,"未解析引用"错误通常是由于变量或函数名未正确声明或导入包导致的。具体到您的代码,主要问题在于:
text变量未声明regexp.Compile的返回值顺序错误FindAllString方法参数使用错误
以下是修正后的代码:
package main
import (
"log"
"regexp"
"strings"
)
func main() {
// 声明并初始化 text 变量
text := "Hello World 123"
text = strings.ToLower(text)
// regexp.Compile 返回 (regexp, error),不是 (error, regexp)
re, err := regexp.Compile("\\w+")
if err != nil {
log.Fatal(err)
}
// FindAllString 的第一个参数应该是字符串,不是正则表达式对象
sentence := re.FindAllString(text, -1)
log.Println(sentence) // 输出: [hello world 123]
}
主要修正点:
- 添加了
text变量的声明和初始化 - 修正了
regexp.Compile的返回值接收顺序 - 正确的顺序是(regexp, error) - 修正了
FindAllString方法的参数 - 第一个参数应该是要匹配的字符串,不是正则表达式对象
运行这段代码将正确输出匹配到的所有单词:[hello world 123]

