나는 모든 것이 잘 작동이동 중에 (일반) 벡터를 사용하려면 어떻게해야합니까?
store := vector.New(200);
...
rbuf := make([]byte, size);
...
store.Push(rbuf);
바이트의 배열 (가변 크기)를 저장하는 벡터 형식을 사용하고,하지만 난 값을 검색 할 때, 컴파일러는 I 타입 주장을 사용할 필요가 알려줍니다. 그래서 나는 사람들을에 추가하고,
for i := 0; i < store.Len(); i++ {
el := store.At(i).([]byte);
...
을 시도하지만이 프로그램을 실행할 때 그것은 밖으로 보석금 :
이interface is nil, not []uint8
throw: interface conversion
내가 빈 요소 인터페이스 변환/'캐스팅'할 수있는 방법 어떤 생각이 벡터가 사용하는 그 다음에 사용하기 원하는 실제 [] 바이트 배열에 데이터를 저장 하시겠습니까?
업데이트 (Go1는) : 벡터 패키지는 2011-10-18에 제거되었습니다.
만약 당신이 그들을 밀어 때 모든 rbufs 실제로 바이트 배열 궁금해? 그것을 캐스팅하기 전에 "print reflect.Typeof (store.At (i)). String()"형식으로 쿼리 할 수 있습니까? 아마도 intvector의 구현을 살펴보면 다음과 같습니다. http://golang.org/src/pkg/container/vector/intvector.go (내게는 사용이 올바른 것 같습니다). – Suppressingfire
결국 실제로 intVectors로 전환했습니다. 나는 UTF-8 문자열을 줄 바꿈으로 끝내고 rbufs는 나중에 문자열로 변환하기 위해 바이트를 저장한다. 그러나 int 배열을 문자열로 직접 변환 할 수 있다는 것을 알았 기 때문에 int에 해당 벡터를 넣고 'string (store.Data())'을 사용하여 문자열로 변환합니다. –
예, 컨테이너/벡터가 마지막으로 종료되었습니다! 더 이상 컨테이너/벡터가 없습니다. – Codefor