2 回答
TA贡献1772条经验 获得超6个赞
当您运行Sscanf时,它将重新分配 、 和 的指针,a以便它们不再指向它们各自在. 如果您输出这些变量的值,您会看到这一点:bcbs
fmt.Printf("%v %v %v", a, b, c)
# Outputs [0 255] [255 0] [0 255]
您可以像这样返回结果:
result := append(a, b...)
result = append(result, c...)
return result, nil
TA贡献1829条经验 获得超4个赞
您可以通过与最初尝试几乎相同的方式获得预期的结果。您的示例的此修改版本产生Value: [0 255 255 0 0 255] Error: <nil>:
package main
import (
"bytes"
"fmt"
)
func parse(data string) ([]byte, error) {
bs := make([]byte, 6)
// Create sub slices over larger slice
a := bs[0:2]
b := bs[2:4]
c := bs[4:6]
// Attempt to scan each string value into their respective slices
_, err := fmt.Sscanf(data, "%4x-%4x-%4x", &a, &b, &c)
fmt.Println(a, b, c)
return bytes.Join([][]byte{a, b, c}, []byte("")), err
}
func main() {
d, err := parse("00ff-ff00-00ff")
fmt.Printf("Value: %+v Error: %v\n", d, err)
}
- 2 回答
- 0 关注
- 192 浏览
添加回答
举报