كيف يمكنني استخدام ناقلات (عام) في الذهاب؟
سؤال
أنا أستخدم نوع متجه لتخزين صفائف بايت (أحجام متغيرة)
store := vector.New(200);
...
rbuf := make([]byte, size);
...
store.Push(rbuf);
أن كل شيء يعمل بشكل جيد، ولكن عندما أحاول استرداد القيم، أخبرني المحول البرمجي أنني بحاجة إلى استخدام تأكيدات الكتابة. لذلك أضيف تلك الموجودة في، وحاول
for i := 0; i < store.Len(); i++ {
el := store.At(i).([]byte);
...
ولكن عندما أقوم بتشغيل هذا الفائدات مع:
interface is nil, not []uint8
throw: interface conversion
أي فكرة كيف يمكنني "إلقاء" / تحويل من واجهة العنصر الفارغة التي يستخدمها ناقلات لتخزين بياناتها إلى صفيف البايت الفعلي [] التي أريدها بعد ذلك؟
تحديث (GO1): تمت إزالة حزمة المتجه 2011-10-18.
المحلول
هذا يفي بالغرض بالنسبة لي. هل أجريت أول 200 عنصر من متجهك؟ إذا لم تكن قد تكون على الأرجح، فستكون مصدر الخطأ الخاص بك.
package main
import vector "container/vector"
import "fmt"
func main() {
vec := vector.New(0);
buf := make([]byte,10);
vec.Push(buf);
for i := 0; i < vec.Len(); i++ {
el := vec.At(i).([]byte);
fmt.Print(el,"\n");
}
}
لا تنتمي إلى StackOverflow