我可以通过在任何函数外定义对象来轻松地使对象成为全局变量,但是对于必须创建的某些结构体,这种方法不适用。
我要做的事情比这要复杂得多:
package main
import "regexp"
func doSomething(test []byte) []byte {
test = reg.ReplaceAll(test,nil)
return test
}
reg, _ := regexp.Compile(`[^a-z\s]`) // this is the issue
func main() {
thing := doSomething("somebytes")
}
显然,上述方法是不被允许的,但这正是我想要做的。
在不传递对象的情况下,似乎没有任何方法可以使reg
对象从doSomething
函数中访问,这正是我要避免的,因为我将要执行数十亿次。
如果我把它放在main()
中,那么它就不再是全局的了。我甚至尝试过这样做:
var reg regexp.Regexp
func main() {
reg, _ = regexp.Compile(`[^a-z\s]`)
thing := doSomething("somebytes")
}
......但那也不起作用,它给了我一个错误。
有什么想法吗?
更新:我的问题实际上并不是与正则表达式有关。那只是一个例子。