Question: I want to pass a compiled regex to golang function, e.g.

```
package main

import "fmt"
import "regexp"

func foo(r *Regexp) {
    fmt.Println(r)    
}

func main() {

    r, _ := regexp.Compile("p([a-z]+)ch")
    foo(r)
}

```

But it is showing "undefined: Regexp"

Any hints?

Answer: 
Use a qualified identifier. For example,

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

```

Output:

```
p([a-z]+)ch

```

> 
> [Qualified identifiers](http://golang.org/ref/spec#Qualified_identifiers)
> 
> 
> A qualified identifier is an identifier qualified with a package name
>  prefix. Both the package name and the identifier must not be blank.
> 
> 
> 
> ```
> QualifiedIdent = PackageName "." identifier .
> 
> ```
> 
> A qualified identifier accesses an identifier in a different package,
>  which must be imported. The identifier must be exported and declared
>  in the package block of that package.
> 
> 
> 
> ```
> math.Sin  // denotes the Sin function in package math
> 
> ```
> 
>
You can also use a dot import:

```
package main

import (
   "fmt"
   . "regexp"
)

func foo(r *Regexp) {
   fmt.Println(r)    
}

func main() {
   r := MustCompile("p([a-z]+)ch")
   foo(r)
}

```

However, typically it will be better to use use the fully qualified name.

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