أجهزة الاستقبال. في هذا المثال ، لا تعمل طريقة SetSomeField كما هو متوقع لأن جهاز الاستقبال الخاص به ليس من نوع المؤشر. FUNC (i *Application) SetSomeField (NewValue String) {
...
}
ومع ذلك ، يقدم هذا التغيير مشكلة جديدة: لم يعد البنية تنفذ الواجهة لأن طريقة GetSomefield لا تزال تحتوي على مستقبل قيمة. تنفيذ الواجهة. من خلال القيام بذلك ، نمكّن طريقة تعديل المثيل الفعلي دون إنشاء نسخة. إليك الرمز المعدل: اكتب واجهة iface { SetSomeField (سلسلة NewValue) GetSomefield () سلسلة } اكتب هيكل التنفيذ { Somefield String } FUNC (i *Application) getSomefield () string { إرجاع I.Somefield } FUNC (i *Application) SetSomeField (NewValue String) { I.Somefield = newValue } FUNC CREANT () *تطبيق { إرجاع وتنفيذ {Somefield: "Hello"} } Func Main () { var a iface a = create () A.Setsomefield ("World") fmt.println (A.GetSomefield ()) }
في هذا الكود المحدث ، تقوم دالة إنشاء بإرجاع مؤشر إلى بنية التنفيذ ، والتي تنفذ واجهة iface. وبالتالي ، يمكن لمتغير النوع إذا كان يمكن أن يشير إلى المؤشر إلى بنية التنفيذ ، مما يسمح لطريقة SetSomeField لتعديل قيمتها.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3