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 關注
- 235 瀏覽
添加回答
舉報