登录
首页 >  Golang >  Go问答

如何创建具有任意值的字符串

来源:stackoverflow

时间:2024-02-29 13:57:22 332浏览 收藏

你在学习Golang相关的知识吗?本文《如何创建具有任意值的字符串》,主要介绍的内容就涉及到,如果你想提升自己的开发能力,就不要错过这篇文章,大家要知道编程理论基础和实战操作都是不可或缺的哦!

问题内容

我想声明一个变量,它是任一值之一,在 typescript 中看起来像:

type NamedString = "a" | "b"

// can only be "a" or "b"
const myVar:NamedString = "a"

// throws err when trying to set for anything else:
const myVar:NamedString = "c" // <- Err: Type '"c"' is not assignable to type 'NamedString'.

我如何在 go 中实现相同的功能?


正确答案


我会这样处理它,因为你无法真正限制变量的内容:

type namedstring string

// constants for equality check.
// e.x: 
// val, err := namedstringbyvalue("a")
// val == astring returs true
const (
   astring namedstring = "a"
   bstring = "b"
)

func namedstringbyvalue(val string) (namedstring, error) {
    switch val {
    case "a", "b":
        return namedstring(val), nil
    default:
        return "", errors.new("unsupported value")
    }
}

如果你不关心 astringbstring 的内容,而你只是想区分它们,你可以像这样使用 iota

type NamedString int

// Plus 1, so that default value (0 for ints) can be returned
// in case of an error.
const (
    AString NamedString = iota + 1
    BString
)

func NamedStringByValue(val string) (NamedString, error) {
    switch val {
    case "a":
        return AString, nil
    case "b":
        return BString, nil
    default:
        return 0, errors.New("unsupported value")
    }
}

终于介绍完啦!小伙伴们,这篇关于《如何创建具有任意值的字符串》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>