จากบทเรียนก่อนหน้านี้ของการเขียนภาษา Go หรือ Go Lang ภาษาใหม่ของ Google เราจะมาศึกษาต่อเนื่องเกี่ยวกับ Decistion Making หรือ if then else
บทเรียนก่อนหน้านี้เป็นการติดตั้งภาษา Go และขั้นตอนการ Compile ไปจนถึงการเขียนโปรแกรมเบื้องต้น สามารถอ่านได้ที่: การเขียนโปรแกรมภาษา Go
รอบนี้จะเป็นการทำงานกับ Decision Making เราจะทดสอบทีละส่วนแล้วกันนะครับ
If Then Else
package main import "fmt" func main() { if 7%2 == 0 { fmt.Println("7 is even") } else { fmt.Println("7 is odd") } if 8%4 == 0 { fmt.Println("8 is divisible by 4") } }
เป็นการตรวจสอบว่า 7 หาร 2 ได้ซึ่งได้เศษ 0 เช็คว่าถ้าผลลัพธ์เป็น 0 ก็เป็นเลขคี่ หรือ 8 หาร 4 ได้เศษเป็น 0 นั่นเป็นแปลว่า 8 หารด้วย 4 ลงตัวเป็นต้น
หรือการตรวจสอบเงื่อนไข เช่น
package main import "fmt" func main() { var a int = 10 if( a < 20 ) { fmt.Printf("a is less than 20\n" ) } fmt.Printf("value of a is : %d\n", a) }
เป็นการตั้งตัวแปรว่า a เป็น 10 มี Data Type เป็น int ถ้า a น้อยกว่า 20 ก็ให้เข้าเงื่อนไขเป็นต้น การแสดงผลของ Printf ใกล้เคียงการใช้งาน C++ ยังไงไม่รู้
ถ้าเพิ่ม else หรือการเช็คเพิ่มเติมว่าเข้าเงื่อนไขไหมก็ตามนี้ครับ:
package main import "fmt" func main() { var a int = 100; if( a < 20 ) { fmt.Printf("a is less than 20\n" ); } else { fmt.Printf("a is not less than 20\n" ); } fmt.Printf("value of a is : %d\n", a); }
ส่วนรูปแบบของ Nested If ก็สามารถเรียกใช้ได้คือ:
package main import "fmt" func main() { var a int = 100 var b int = 200 if( a == 100 ) { if( b == 200 ) { fmt.Printf("Value of a is 100 and b is 200\n" ); } } fmt.Printf("Exact value of a is : %d\n", a ); fmt.Printf("Exact value of b is : %d\n", b ); }
ผลลัพธ์:
การใช้งาน Switch Case ก็จะมีรูปแบบดังนี้:
package main import "fmt" func main() { var grade string = "B" var marks int = 90 switch marks { case 90: grade = "A" case 80: grade = "B" case 50,60,70 : grade = "C" default: grade = "D" } switch { case grade == "A" : fmt.Printf("Excellent!\n" ) case grade == "B", grade == "C" : fmt.Printf("Well done\n" ) case grade == "D" : fmt.Printf("You passed\n" ) case grade == "F": fmt.Printf("Better try again\n" ) default: fmt.Printf("Invalid grade\n" ); } fmt.Printf("Your grade is %s\n", grade ); }
ก็คือโปรแกรมเกรดนั่นแหละ (ข้อสอบยอดฮิต) ส่วนรูปแบบสุดท้ายที่คล้าย Switch Case คือ Select Statement ครับใช้งานดังนี้:
package main import "fmt" func main() { var c1, c2, c3 chan int var i1, i2 int select { case i1 = <-c1: fmt.Printf("received ", i1, " from c1\n") case c2 <- i2: fmt.Printf("sent ", i2, " to c2\n") case i3, ok := (<-c3): // same as: i3, ok := <-c3 if ok { fmt.Printf("received ", i3, " from c3\n") } else { fmt.Printf("c3 is closed\n") } default: fmt.Printf("no communication\n") } }
เป็นอันจบการใช้ Decision Making ครับ