gpt4 book ai didi

go - 为什么 go build 会因为 regexp.MustCompile 解析错误而成功?

转载 作者:数据小太阳 更新时间:2023-10-29 03:43:04 26 4
gpt4 key购买 nike

go rungo test(编译然后运行)失败,但go build(仅编译)失败。我本以为 MustCompile 与编译有关,而不是运行时。


package main

import (
"regexp"
)

var someInvalidRegex = regexp.MustCompile(`(?!`)

func main() {
someInvalidRegex.MatchString("foo")
}

运行时失败:

$ go run main.go
panic: regexp: Compile(`(?!`): error parsing regexp: invalid or unsupported Perl syntax: `(?!`

goroutine 1 [running]:
regexp.MustCompile(0x10b7d19, 0x3, 0xc420022070)
/usr/local/Cellar/go/1.10.3/libexec/src/regexp/regexp.go:240 +0x171
exit status 2

编译成功:

$ go build -o foo
$ echo $?
0

运行时再次失败:

$ ./foo
panic: regexp: Compile(`(?!`): error parsing regexp: invalid or unsupported Perl syntax: `(?!`

goroutine 1 [running]:
regexp.MustCompile(0x10b7d19, 0x3, 0xc420022070)
/usr/local/Cellar/go/1.10.3/libexec/src/regexp/regexp.go:240 +0x171

最佳答案

编译器不会分析您的正则表达式。它是在运行时完成的。“MustCompile”函数名中的“Compile”部分代表正则表达式的编译。

关于go - 为什么 go build 会因为 regexp.MustCompile 解析错误而成功?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51616379/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com