如何在go lang中定义一个单字节变量
How to define a single byte variable in go lang
我是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))
}
如您所见,我可以用数组包裹一个字节,一切正常,但是如何在不使用数组的情况下定义单个字节?谢谢。
在您的示例中,使用 conversion syntax T(x)
:
c := byte('A')
Conversions are expressions of the form T(x)
where T
is a type and x
is an expression that can be converted to type T
.
cb := byte('A')
fmt.Println(unhex(cb))
输出:
10
如果您不想使用 :=
语法,您仍然可以使用 var
语句,它可以让您明确指定类型。例如:
var c byte = 'A'
我是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))
}
如您所见,我可以用数组包裹一个字节,一切正常,但是如何在不使用数组的情况下定义单个字节?谢谢。
在您的示例中,使用 conversion syntax T(x)
:
c := byte('A')
Conversions are expressions of the form
T(x)
whereT
is a type andx
is an expression that can be converted to typeT
.
cb := byte('A')
fmt.Println(unhex(cb))
输出:
10
如果您不想使用 :=
语法,您仍然可以使用 var
语句,它可以让您明确指定类型。例如:
var c byte = 'A'