登录
首页 >  Golang >  Go问答

声明字符串类型和字符串之间的比较性

来源:stackoverflow

时间:2024-03-06 21:00:27 393浏览 收藏

Golang不知道大家是否熟悉?今天我将给大家介绍《声明字符串类型和字符串之间的比较性》,这篇文章主要会讲到等等知识点,如果你在看完本篇文章后,有更好的建议或者发现哪里有问题,希望大家都能积极评论指出,谢谢!希望我们能一起加油进步!

问题内容

我有一个别名类型“loglevel”,它是一个字符串:

type loglevel string

const (
    infolevel  loglevel = "info"
    debuglevel loglevel = "debug"
    warnlevel  loglevel = "warn"
    errorlevel loglevel = "error"
    paniclevel loglevel = "panic"
    fatallevel loglevel = "fatal"
)

现在我想做一个 switch case 来根据用户输入检查这些常量:

switch strings.ToLower(input) {
    case "", InfoLevel:
        return zap.NewAtomicLevelAt(zap.InfoLevel)
    default:
        fmt.Errorf("Invalid log level supplied '%s'. Defaulting to info loglevel", input)
        return zap.NewAtomicLevelAt(zap.InfoLevel)
    }

这不起作用,因为显然类型不兼容?

string.tolower(input) 上的开关中的 infolevel 无效情况(不匹配 类型 loglevel 和字符串)

如何在案例中使用定义的常量?


解决方案


comparison 中的一个操作数必须是另一个操作数 assignable。类型 string 不可分配给 loglevel,反之亦然。要获得可比较的值,请将 string convert 转换为 loglevel

switch LogLevel(strings.ToLower(input)) {

type loglevel string 是类型定义。

type loglevel = string 是类型别名。

看起来您想要后者而不是前者。

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

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