英文:
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(){
// 在这里使用数组包装起来是可以的
c := []byte{'A'}
fmt.Println(unhex(c[0]))
//c := byte{'A'} **错误** 无效的复合字面量类型:byte
//fmt.Println(unhex(c))
}
你可以看到,我可以用数组包装一个字节,一切都正常,但是如果不使用数组,我该如何定义一个单个字节呢?谢谢。
英文:
I am a newbie to golang and want to find a way to define a single byte
variable.
It's a demo program in Effective Go reference.
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))
}
As you see I can wrap a byte with array, things goes fine, but How can I define a single byte without using array? thanks.
答案1
得分: 14
在你的示例中,可以使用转换语法 T(x)
来实现:
c := byte('A')
转换是形式为
T(x)
的表达式,其中T
是类型,x
是可以转换为类型T
的表达式。
请参考这个示例。
cb := byte('A')
fmt.Println(unhex(cb))
输出结果:
10
英文:
In your example, this would work, using the 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))
Output:
10
答案2
得分: 3
如果你不想使用:=
语法,你仍然可以使用var
语句,它允许你显式地指定类型。例如:
var c byte = 'A'
英文:
If you don't want to use the :=
syntax, you can still use a var
statement, which lets you explicitly specify the type. e.g:
var c byte = 'A'
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论