一尘不染

如何在Go lang中定义一个单字节变量

go

我是golang的新手,想找到一种定义 单个 byte变量的方法。

这是 Effective Go 参考中的演示程序。

package main

import (
   "fmt"
)

func unhex(c byte) byte{
    switch {
    case '0' <= c && c <= '9':
        return c - '0'
    case 'a' <= c && c <= 'f':
        return c - 'a' + 10
    case 'A' <= c && c <= 'F':
        return c - 'A' + 10
    }
    return 0
}

func main(){
    // It works fine here, as I wrap things with array.
    c := []byte{'A'}
    fmt.Println(unhex(c[0]))

    //c := byte{'A'}    **Error** invalid type for composite literal: byte
    //fmt.Println(unhex(c))
}

如您所见,我可以用数组包装一个字节,一切正常,但是如何在不使用数组的情况下定义单个字节?谢谢。


阅读 276

收藏
2020-07-02

共1个答案

一尘不染

在您的示例中,使用转换语法T(x)可以正常工作:

c := byte('A')

转换是形式的表达式,T(x)其中T是类型,x是可以转换为type的表达式T

请参阅此操场示例

cb := byte('A')
fmt.Println(unhex(cb))

输出:

10
2020-07-02