لننظر إلى برنامج صغير:
package main
func foo() bool {
return false
}
func main() {
switch foo()
{
case false: println("False")
case true: println("True")
}
}
ما مخرجات البرنامج أعلاه؟ لنفكر قليلاً.
~
~
~
False؟ لا، إنه يطبع True. مفاجَأ؟ ألا تُرجع الدالة foo دائماً false؟
نعم، الدالة foo تُرجع دائماً false، لكن هذا لا علاقة له هنا.
ستُدرج المصرِّفات بعض الفواصل المنقوطة تلقائياً في الشيفرة أعلاه كما يلي:
package main
func foo() bool {
return false;
};
func main() {
switch foo();
{
case false: println("False");
case true: println("True");
};
};
الآن، يتضح أن تعبير switch (true) محذوف. وكتلة switch مكافئة فعلياً لـ:
switch foo(); true
{
case false: println("False");
case true: println("True");
};
ولهذا السبب يطبع البرنامج True.
حول قواعد إدراج الفواصل المنقوطة بالتفصيل، يُرجى قراءة هذه المقالة.