Go语言的`iota`与C++中的`enum`有相似之处。

huangapple go评论87阅读模式
英文:

Go programming iota similarity with enum in c++

问题

抱歉,我的Go语言知识非常有限。
我有一个这样的定义:

type ErrorVal int
const (
    LEV_ERROR ErrorVal = iota
    LEV_WARNING  
    LEV_DEBUG
)

在我的Go示例代码中,我想为ErrorVal类型定义一个值。

我想做的类似于C语言中的枚举值定义:

enum ErrorVal myVal = LEV_ERROR;

在Go语言中,你可以通过以下方式实现类似的效果:

英文:

Pardon me my knowledge in Go is very limited.
I have a definition like this

type ErrorVal int
const (
    LEV_ERROR ErrorVal = iota
    LEV_WARNING  
    LEV_DEBUG
)

Later in my Go sample code I want to define a value for a type of ErrorVal.

What I am trying to do is in C we can define enum value like this

enum ErrorVal myVal = LEV_ERROR;

How can I do something similar in Go?

答案1

得分: 3

请使用以下代码片段:

myval := LEV_ERROR

或者

var myval ErrorVal = LEV_ERROR

这是要翻译的内容。

英文:

Use the following sinppet:

myval := LEV_ERROR

or

var myval ErrorVal = LEV_ERROR

答案2

得分: 0

你可以将一个常量赋值给一个变量,并且得到与C语言的enum相同的结果:

type ErrorVal int

const (
    LEV_ERROR ErrorVal = iota
    LEV_WARNING
    LEV_DEBUG
)

func main() {
    myval := LEV_ERROR
    fmt.Println(myval)
}

在Go语言中,我们可以使用iota来模拟C语言的enum#define常量。

Go by Example:

我们可以使用iota来模拟C语言的enum#define常量。

英文:

You can assign a constant to a variable and get the same result as C's enum:

type ErrorVal int

const (
    LEV_ERROR ErrorVal = iota
	LEV_WARNING
    LEV_DEBUG
)

func main() {
    myval := LEV_ERROR
	fmt.Println(myval)
}

Go by Example:

> We can use iota to simulate C's enum or #define constant.

huangapple
  • 本文由 发表于 2017年2月9日 15:22:31
  • 转载请务必保留本文链接:https://go.coder-hub.com/42130553.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定