以下示例使用 iota 定义了一系列从 3333 开始的端口号。
package main
import (
"fmt"
)
const (
FirstPort = iota+3333
SecondPort
ThirdPort
)
func main() {
hostAndPort := "localhost:"+fmt.Sprint(SecondPort)
fmt.Printf("%s", hostAndPort )
// Output:
// localhost:3334
}
Run Code Online (Sandbox Code Playgroud)
在组合主机名和端口时,我想避免必须将端口常量包装起来fmt.Sprint并简单地编写,例如,"localhost:"+SecondPort. 有没有办法使用 iota 将端口号定义为字符串常量,例如"3334"?
以下不起作用:
FirstPort = string(iota + 3333)
Run Code Online (Sandbox Code Playgroud)
也没有
FirstPort = fmt.Sprintf("%d", iota + 3333)
Run Code Online (Sandbox Code Playgroud) 说我有下一个C程序:
#include <stdio.h>
int main(int args, char* argv[])
{
enum RC {
APPLE=0,
ORANGE,
PEAR,
BANANA=99,
GRAPE
};
printf("%d, %d, %d, %d, %d\n", APPLE, ORANGE, PEAR, BANANA, GRAPE);
}
Run Code Online (Sandbox Code Playgroud)
输出为:
0、1、2、99、100
如果进行中,如何使用a more golang way来处理呢?
实际上,如果我只是想跳过一些值。例如print 0, 1, 2, 5, 6,那么我可以使用next跳过一些值,但是在这里我需要跳过96个值...
package main
import "fmt"
func main() {
const (
APPLE = iota
ORANGE
PEAR
_
_
BANANA
GRAPE
)
fmt.Println(APPLE, ORANGE, PEAR, BANANA, GRAPE)
}
Run Code Online (Sandbox Code Playgroud)
并且,我也可以使用next,但是在GRAPE... 之后我仍然有很多const变量。
package main
import "fmt"
func main() {
const …Run Code Online (Sandbox Code Playgroud)