gpt4 book ai didi

go - 如何创建从匹配模式的字符串派生的 Go 类型?

转载 作者:IT王子 更新时间:2023-10-29 02:29:23 24 4
gpt4 key购买 nike

我正在尝试创建一个基于 string 但需要匹配模式(Slack 用户名,例如 @ben)的新 Go 类型。

使用时,类型看起来像这样:

var user SlackUser
user = SlackUser("@ben")

fmt.Println(user) //This should print: @ben

如果匹配模式,NewSlackUser 将起作用。如果没有,它将引发错误。

要匹配的模式,基于this , 是:

^@[a-z0-9][a-z0-9._-]*$

(我是 Go 的新手,所以非常感谢对我的方法的任何修正)

最佳答案

使用结构类型:

type SlackUser struct {
username string
}

编译正则表达式:

var (
pattern = regexp.MustCompile("^@[a-z0-9][a-z0-9._-]*$")
)

构造函数:

func NewSlackUser(username string) (*SlackUser, error) {
if !pattern.MatchString(username) {
return nil, errors.New("Invalid username.")
}
return &SlackUser{ username }, nil
}

纵梁:

func (s *SlackUser) String() string {
return s.username
}

完整 example

关于go - 如何创建从匹配模式的字符串派生的 Go 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42112907/

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