https://github.com/tarm/serial/blob/master/serial.go#L103
type StopBits byte
type Parity byte
type Config struct {
Name string
Baud int
ReadTimeout time.Duration
Size byte
Parity Parity
StopBits StopBits
}
我试图标记命令行并填写配置结构,但我无法弄清楚如何从int或字符串转到单个字节?
示例尺寸7
尝试
mysize := "7"
mysize[0]
但是tarm / serial告诉我serial.Config
中输入错误无效i, err := strconv.Atoi("7")
编译器抱怨我不能i.(byte)
我能使其工作的唯一方法是在配置结构中硬编码size: 7
。
答案 0 :(得分:13)
您只需将int转换为字节:https://play.golang.org/p/w0uBGiYOKP
val := "7"
i, _ := strconv.Atoi(val)
byteI := byte(i)
fmt.Printf("%v (%T)", byteI, byteI)
编译器抱怨我不能做。(字节)
当然,因为这是一个类型断言,如果i
不是给定类型(在您的示例中为byte
),它将失败,或者它不是接口
答案 1 :(得分:4)
为了使用类型断言(你正在做),你需要在左边有一个接口。您可能会收到“左边非接口类型字节”的错误 - 这是真的,因为您已经知道了类型。相反,你应该施展。
你想要使用byte(i)而不是i。(byte):
i := 12
c := byte(i)
fmt.Println(c) //12
当你的int超过一个字节可以容纳的max int时要小心;你最终会溢出字节。在这种情况下,如果它超过255(单个字节可以容纳的最多),你就会溢出。
答案 2 :(得分:0)
str := "Hello"
var b byte
for i,_ := range str{
b = str[i]
fmt.Println(b)
}