Golang中未解析的引用问题如何解决

Golang中未解析的引用问题如何解决 我不太理解"未解析引用"是什么意思。这段代码中并没有指针啊?

text = strings.ToLower(text)
	err, re := regexp.Compile("\\w+")

	if err != nil {
		log.Fatal(err)
	}
	sentence := re.FindAllString(re, -1)
3 回复

非常感谢!真希望这只是个偶然…

更多关于Golang中未解析的引用问题如何解决的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


@Dj_Sparks

我认为您原本想写的是以下代码,因为您不小心将 errre 写反了,并且向 FindAllString 传递的是 re 而不是 text

text = strings.ToLower(text)
re, err := regexp.Compile("\\w+")
if err != nil {
    log.Fatal(err)
}

sentence := re.FindAllString(text, -1)

在您的代码中,"未解析引用"错误通常是由于变量或函数名未正确声明或导入包导致的。具体到您的代码,主要问题在于:

  1. text 变量未声明
  2. regexp.Compile 的返回值顺序错误
  3. 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]
}

主要修正点:

  1. 添加了 text 变量的声明和初始化
  2. 修正了 regexp.Compile 的返回值接收顺序 - 正确的顺序是 (regexp, error)
  3. 修正了 FindAllString 方法的参数 - 第一个参数应该是要匹配的字符串,不是正则表达式对象

运行这段代码将正确输出匹配到的所有单词:[hello world 123]

回到顶部