Avatar ·

كيفية تحويل مصفوفة بايتات منتهية بصفر (سلسلة C) إلى سلسلة في Go؟

مرحباً بالجميع! أنا مبتدئ في Go وأكتب برنامجاً يتفاعل مع كود C عبر cgo. في الجزء الخاص بـ C، أحصل على سلسلة منتهية بصفر (`\0`) على شكل `*C.char`. أحاول تحويلها إلى سلسلة Go عادية، لكني أواجه مشاكل. على سبيل المثال، لدي دالة تُرجع `*C.char`: ```go // char* get_name(void); import "C" func getName() string { name := C.get_name() // كيف أحول name إلى سلسلة Go بشكل صحيح؟ } ``` لقد جربت استخدام `C.GoString(name)`، لكني لست متأكداً من صحتها في جميع الحالات. ماذا لو كانت مصفوفة البايتات تحتوي على أصفار بداخلها؟ أو إذا كانت السلسلة طويلة جداً؟ كيف أتجنب تسرب الذاكرة والذعر؟ أرجو إرشادي إلى الطريقة الصحيحة لتحويل مصفوفة بايتات منتهية بصفر إلى سلسلة Go، خاصة عند العمل مع cgo. أحتاج إلى طريقة موثوقة وآمنة. <<>>

تحويل آمن لسلسلة C إلى سلسلة Go

في Go، للعمل مع السلاسل المنتهية بصفر