https://github.com/tarm/serial/blob/master/serial.go#L103type StopBits bytetype Parity bytetype Config struct { Name string Baud int ReadTimeout time.Duration Size byte Parity Parity StopBits StopBits}我正在尝试标记命令行并填写配置结构,但我不知道如何从 int 或 string 转到单个字节?示例尺寸 7试过了mysize := "7"mysize[0]但随后 tarm/serial 告诉我 serial.Config 中的输入错误无效i, err := strconv.Atoi("7")编译器抱怨我做不到 i.(byte)我可以使它工作的唯一方法是size: 7在配置结构中进行硬编码。
3 回答
桃花长相依
TA贡献1860条经验 获得超8个赞
您可以将 int 转换为字节:https : //play.golang.org/p/w0uBGiYOKP
val := "7"
i, _ := strconv.Atoi(val)
byteI := byte(i)
fmt.Printf("%v (%T)", byteI, byteI)
编译器抱怨我不能做 i.(byte)
当然,因为这是一种说法,它就会如果失败,i是不是给定类型的(byte在你的例子),或者它不是一个接口。
翻过高山走不出你
TA贡献1875条经验 获得超3个赞
为了使用类型断言(您正在这样做),您需要在左侧有一个接口。您可能会收到“左侧非接口类型字节”的错误 - 这是真的,因为您已经知道类型。相反,你应该铸造。
您需要使用 byte(i) 而不是 i.(byte):
i := 12
c := byte(i)
fmt.Println(c) //12
当您的 int 超过一个字节可以容纳的最大 int 时要小心;你最终会溢出字节。在这种情况下,如果超过 255(单个字节最多可以容纳),就会溢出。
繁华开满天机
TA贡献1816条经验 获得超4个赞
str := "Hello"
var b byte
for i,_ := range str{
b = str[i]
fmt.Println(b)
}
- 3 回答
- 0 关注
- 118 浏览
添加回答
举报
0/150
提交
取消