كيف يمكنني استخدام ناقلات (عام) في الذهاب؟

StackOverflow https://stackoverflow.com/questions/1726336

  •  19-09-2019
  •  | 
  •  

سؤال

أنا أستخدم نوع متجه لتخزين صفائف بايت (أحجام متغيرة)

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");
     }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top