"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > أسباب فشل go type الاسم المستعار

أسباب فشل go type الاسم المستعار

نشر في 2025-04-12
تصفح:435

Why Does Go's Type Assertion Fail with Type Aliases?

استيراد "FMT" اكتب شيء فونك فونك (INT) Func Funcy (I int) Bool { إرجاع I ٪ 2 == 0 } Func Main () { var a interface {} = funcy _ = a. (func (int) bool) // works fmt.println ("رائع - على ما يبدو ، تحديد حرفيا أعمال توقيع FUNC.") _ = a. (شيء ما fmt.println ("darn - لا يصل إلى هنا. }

يعمل تأكيد النوع الأول عندما يعلن بشكل صريح عن النوع كـ func (int). ومع ذلك ، فإن الثانية التي تستخدم نوع الاسم المستعار somefuncy الذعر. لذلك ، يعتبر نوع الاسم المستعار somefuncy ، على الرغم من مشاركة نفس التوقيع مثل BUNC (int) ، يعتبر نوعًا متميزًا.

BONUS
package main

import "fmt"

type somethingFuncy func(int) bool

func funcy(i int) bool {
    return i%2 == 0
}

func main() {
    var a interface{} = funcy

    _ = a.(func(int) bool)  // Works

    fmt.Println("Awesome -- apparently, literally specifying the func signature works.")

    _ = a.(somethingFuncy)  // Panics

    fmt.Println("Darn -- doesn't get here. But somethingFuncy is the same signature as func(int) bool.")
}

تفشل هذه المقارنة عند استخدام نوع الاسم المستعار لأنه يتطلب تطابقًا دقيقًا.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3