我想将编译的正则表达式传递给golang函数,例如
package main
import "fmt"
import "regexp"
func foo(r *Regexp) {
fmt.Println(r)
}
func main() {
r, _ := regexp.Compile("p([a-z]+)ch")
foo(r)
}
但它显示“undefined:Regexp”
任何提示?
答案 0 :(得分:8)
使用合格的标识符。例如,
package main
import "fmt"
import "regexp"
func foo(r *regexp.Regexp) {
fmt.Println(r)
}
func main() {
r, _ := regexp.Compile("p([a-z]+)ch")
foo(r)
}
输出:
p([a-z]+)ch
限定标识符是使用包名限定的标识符 字首。包名称和标识符都不能为空。
QualifiedIdent = PackageName "." identifier .
合格标识符访问不同包中的标识符, 必须导入。必须导出和声明标识符 在该软件包的软件包块中。
math.Sin // denotes the Sin function in package math
答案 1 :(得分:0)
您也可以使用点导入:
package main
import (
"fmt"
. "regexp"
)
func foo(r *Regexp) {
fmt.Println(r)
}
func main() {
r := MustCompile("p([a-z]+)ch")
foo(r)
}
但是,通常最好使用完全限定名称。