0
저수준 프로젝트에서 Go를 사용하여 데이터를 복사하지 마십시오. 내가 바이트 슬라이스 아무것도 복사하지 않고 구조체 인 것처럼 값을 읽기 위해이 slice of bytes
와 pointer of my struct
캐스팅하고 싶은구조체의 포인터로 [] 바이트를 캐스팅하는 방법은 무엇입니까?
type myStruct struct {
a uint8
b uint8
}
:
나는 고정 된 크기의 구조체가있다. C에서
data := []byte{69,0}
var obj *myStruct
//something like:
obj = myStruct(data)
// or
obj = &myStruct(data)
은 다음과 같습니다 가능 obj = (struct myStruct*) data;
- 인가? 그렇게 할 수있는 해결책은 무엇입니까? 모범 사례?
[] 바이트에 대한 오프셋 및 색인을 사용하여 무효화하고 싶습니다.
슬라이스는 고정 메모리 아니므는, I는 고정 된 어레이에 byte[0:2]
[]byte
변환함으로써 가능할 것 같다.
없음 이동 - 기본 솔루션? 이 솔루션은 [] 바이트의 길이로 작동합니까? 슬라이스의 메모리 맵은 연속적이지 않기 때문에 안전하지 않은 패키지가 복사를 통해 성능을 변경하지 않고 어떻게 처리 할 수 있는지 궁금하다. 벤치 마크를 통해 확인할 것이다. –
@Alexis_FR_JP, 이것은 Go 네이티브이며, 슬라이스는 항상 인접 해 있습니다. – JimB
좋은 점은 이름 때문에 '안전하지 않은'것을 사용하지 않았으며 Rob Pike가 '안전하지 않은'수입품을 가지고 프로덕션에 참가해서는 안된다는 말을 들었 기 때문입니다. 그때 더 많은 것을 집중해야합니다. 고맙습니다! –