英文:
How to pass Regex in golang function
问题
我想将编译后的正则表达式传递给Go语言函数,例如:
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)
}
但是它显示"undefined: Regexp"。
有什么提示吗?
英文:
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?
答案1
得分: 12
使用合格的标识符。例如,
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 // 表示 math 包中的 Sin 函数
英文:
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
>
> 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
答案2
得分: 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
英文:
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>
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论