您可以使用go generate
为您生成此文件。
安装stringer
使用
go get golang.org/x/tools/cmd/stringer
现在type
为您的const
. 你可以这样做
type TLSType uint16
const (
TLS_RSA_WITH_RC4_128_SHA TLSType = 0x0005
TLS_RSA_WITH_3DES_EDE_CBC_SHA TLSType = 0x000a
TLS_RSA_WITH_AES_128_CBC_SHA TLSType = 0x002f
TLS_RSA_WITH_AES_256_CBC_SHA TLSType = 0x0035
TLS_ECDHE_RSA_WITH_RC4_128_SHA TLSType = 0xc011
TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA TLSType = 0xc012
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA TLSType = 0xc013
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA TLSType = 0xc014
)
然后将此行添加到您的文件中(间距很重要)
//go:generate stringer -type=TLSType
现在转到程序所在文件夹中的终端并运行
go generate
tlstype_string.go
这将在您的代码目录中创建一个名为的文件,该文件是fmt.Stringer
为您的TLSType
. 如果您想查看实现但不需要,请打开它。它会起作用的。
现在,当您在此目录上运行go build
或运行时go run *.go
,您的源文件将使用生成的代码。
完整的程序看起来像这样
package main
import (
"fmt"
)
//go:generate stringer -type=TLSType
type TLSType uint16
const (
TLS_RSA_WITH_RC4_128_SHA TLSType = 0x0005
TLS_RSA_WITH_3DES_EDE_CBC_SHA TLSType = 0x000a
TLS_RSA_WITH_AES_128_CBC_SHA TLSType = 0x002f
TLS_RSA_WITH_AES_256_CBC_SHA TLSType = 0x0035
TLS_ECDHE_RSA_WITH_RC4_128_SHA TLSType = 0xc011
TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA TLSType = 0xc012
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA TLSType = 0xc013
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA TLSType = 0xc014
)
func main() {
fmt.Println("This const will be printed with its name instead of its number:")
fmt.Println(TLS_RSA_WITH_RC4_128_SHA)
fmt.Println()
fmt.Println("So will this one:")
fmt.Println(TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA)
fmt.Println()
fmt.Println("Or maybe we want to give it a value and convert:")
fmt.Println(TLSType(0xc011))
fmt.Println()
fmt.Println("No problem:")
fmt.Println(TLSType(0xc013))
}
哪个输出
This const will be printed with its name instead of its number:
TLS_RSA_WITH_RC4_128_SHA
So will this one:
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
Or maybe we want to give it a value and convert:
TLS_ECDHE_RSA_WITH_RC4_128_SHA
No problem:
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
如果添加新const
值,只需go generate
再次运行以更新生成的代码。