如何在golang函数中传递正则表达式

时间:2014-05-01 10:05:26

标签: go

我想将编译的正则表达式传递给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”

任何提示?

2 个答案:

答案 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
  

Qualified identifiers

     

限定标识符是使用包名限定的标识符   字首。包名称和标识符都不能为空。

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)
}

但是,通常最好使用完全限定名称。

https://golang.org/ref/spec#Import_declarations