عندما يكون لديك كائن io.ReadCloser، مثل الكائن الذي تم الحصول عليه من http.Response، يتم تحويل الكائن بالكامل يتطلب الدفق إلى سلسلة نسخة كاملة من مصفوفة البايت. على الرغم من أن هذه قد لا تكون العملية الأكثر كفاءة، إلا أنها الطريقة القياسية والآمنة لتحقيق هذا التحويل.
لإجراء التحويل، يمكنك استخدام الخطوات التالية:
buf := new(bytes.Buffer) buf.ReadFrom(yourReader) s := buf.String() // Performs a complete copy of the bytes in the buffer.
إذا حاولت تحويل مصفوفة بايت مباشرة إلى سلسلة، فسوف تواجه مشكلات تتعلق بسلامة النوع تتعلق بالسلاسل الموجودة غير قابل للتغيير في الذهاب. ومع ذلك، فإن استخدام الحزمة غير الآمنة يسمح لك بتجاوز آليات الأمان هذه. كن حذرًا عند التعامل مع الحزمة غير الآمنة، حيث قد يؤدي ذلك إلى عواقب غير متوقعة.
إليك مثال لاستخدام الحزمة غير الآمنة:
buf := new(bytes.Buffer) buf.ReadFrom(yourReader) b := buf.Bytes() s := *(*string)(unsafe.Pointer(&b))
رغم أن هذه الطريقة قد تبدو أكثر كفاءة، إلا أن لها عيوبها:
لذلك، يوصى عمومًا بالالتزام بالطريقة القياسية والآمنة لنسخ البايتات إلى مخزن مؤقت ثم تحويلها إلى سلسلة. إذا أصبح حجم السلسلة كبيرًا جدًا بالنسبة لهذا الأسلوب، فقد يكون من المفيد التفكير في طرق بديلة، مثل التدفق أو المعالجة المتزايدة.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3