今天在看gjson时,发现了几句代码,感觉非常奇怪,如下:
// Type is Result type
type Type int
const (
// Null is a null json value
Null Type = iota
// False is a json false boolean
False
// Number is json number
Number
// String is a json string
String
// True is a json true boolean
True
// JSON is a raw block of JSON
JSON
)
func (t Type) String() string {
switch t {
default:
return ""
case Null:
return "Null"
case False:
return "False"
case Number:
return "Number"
case String:
return "String"
case True:
return "True"
case JSON:
return "JSON"
}
}
然后我自己尝试了一下,一直报错,然后往上搜索了一下相关东西,感觉有意思,所以记录下.
type a int
const sample int = 1
const(
B a = sample
C
D
)
func (t a) String() string {
switch t {
default:
return "1"
case C:
return "2"
case D:
return "3"
}
}
golang中const定义,在const中()的常量必须是同一种类型。iota关键字在const关键中出现时其值为0,const每增加一行iota的值+1,所以gjson中False,Number,String,True的值默认是从0开始自增的