16 진수를 나타내는 문자열을 읽고 바이트 조각 ([]string --> [][]byte
)의 조각으로 디코드하고 싶습니다.이동 : 딥 복사 조각
i = 0 tmp = 010203
i = 1 tmp = 040506
i = 3 tmp = 070809
line 69 data[0] = data[1] = data[2] = 070809
는 아마도 함수가 [][]byte{[]byte{}, []byte{}, []byte{0x07, 0x08, 0x09}}
를 반환 args = []string{"010203","040506","070809"}
다음과 같은 출력을 얻을 수
func (self *algo_t) decode_args(args []string) ([][]byte, error) {
var data [][]byte
for i := uint32(0); i < self.num_args; i++ {
data = make([][]byte, self.num_args)
tmp, err := hex.DecodeString(args[i])
fmt.Printf("i = %d\ttmp = %x\n", i, tmp)
data[i] = make([]byte, len(tmp))
copy(data[i], tmp)
if err != nil {
fmt.Fprintf(os.Stderr, "Error decoding hex string %s: %s\n", args[i], err.Error())
return nil, err
}
}
fmt.Printf("line 69\tdata[0] = %x\tdata[1] = %x\tdata[2] = %x\n",data[0], data[1], data[2])
return data, nil
}
이 코드를 호출하고 전달이 지금까지 내 코드입니다.
나는 이것이 Go의 포인터 동작 때문이라는 것을 알고 있습니다. 이런 종류의 사본을 작성하는 가장 좋은 방법은 무엇입니까? http://godoc.org/code.google.com/p/rog-go/exp/deepcopy
당신은 여기에 소스를 볼 수 있습니다 : https://code.google.com/p/rog-go/source/browse/exp/deepcopy/deepcopy.go
; 오류는 실제로 4 행에 있습니다. make() 명령은 for 루프 외부로 이동해야합니다. 나는 그것을했고, 모든 것이 잘 작동한다. – ILikeFood