当前项目要求我获取一个 struct (带有注释标记),并将数据作为平面文件写入.该文件是一个柱状文件,因此数据的定位非常重要.这些位置和长度在字段级别的my struct标记中设置.
我遇到的问题是,我正在将指向[]字节结果片的指针传递给我的函数,但无论我做什么,原始片都没有包含数据.下面是一个简单的示例代码,演示了我正在做的事情.
package main
import (
"fmt"
"strconv"
)
func writeInt(value int, fieldData *[]byte, col, length int) {
v := fmt.Sprintf("%+0" + strconv.Itoa(length) +"d", value)
copyData(fieldData, v, col, length)
}
func writeString(value string, fieldData *[]byte, col, length int) {
v := fmt.Sprintf("%-" + strconv.Itoa(length) + "s", value)
copyData(fieldData, v, col, length)
}
func copyData(fieldData *[]byte, v string, col, length int) {
data := *fieldData
if len(data) < col + length {
temp := make([]byte, col + length - 1)
copy(temp, data)
data = temp
}
copy(data[col - 1:length], v)
fieldData = &data
}
func main() {
var results []byte
writeInt(13, &results, 1, 3)
writeString("TEST", &results, 4, 10)
fmt.Print(results)
}
预期结果(作为字符串)应为:
'013TEST ' - zero pad in front of int and space pad behind string
但我得到了【】
我是完全错误地看待这一点,还是我只是不理解某些东西?