1 ภาพรวมของตัวดำเนินการใน Golang
ในภาษา Go ตัวดำเนินการถูกใช้เพื่อดำเนินการโค้ดโปรแกรม รวมถึงการดำเนินการเลขคณิต การเปรียบเทียบความสัมพันธ์ การดำเนินการตรรกะ และอื่น ๆ ตัวดำเนินการต่างๆ สอดคล้องกับความสามารถและสถานการณ์การใช้งานที่แตกต่าง การเข้าใจและชำนาญการใช้ตัวดำเนินการเหล่านี้เป็นพื้นฐานสำคัญสำหรับการเขียนโปรแกรมที่มีประสิทธิภาพ
2 ตัวดำเนินการเลขคณิต
ในภาษา Go มีชุดของตัวดำเนินการเลขคณิตดังนี้:
- บวก (+): การดำเนินการบวก
- ลบ (-): การดำเนินการลบ
- คูณ (*): การดำเนินการคูณ
- หาร (/): การดำเนินการหาร
- เศษ (%): การดำเนินการโมดูล
ตัวอย่าง:
package main
import "fmt"
func main() {
// การดำเนินการบวก
sum := 10 + 5
fmt.Println("10 + 5 =", sum) // ผลลัพธ์ คือ 15
// การดำเนินการลบ
diff := 10 - 5
fmt.Println("10 - 5 =", diff) // ผลลัพธ์ คือ 5
// การดำเนินการคูณ
prod := 10 * 5
fmt.Println("10 * 5 =", prod) // ผลลัพธ์ คือ 50
// การดำเนินการหาร
quot := 10 / 5
fmt.Println("10 / 5 =", quot) // ผลลัพธ์ คือ 2
// การดำเนินการโมดูล
rem := 10 % 5
fmt.Println("10 % 5 =", rem) // ผลลัพธ์ คือ 0
}
3 ตัวดำเนินการตรรกะ
ตัวดำเนินการตรรกะในภาษา Go ถูกใช้เพื่อเชื่อมต่อเงื่อนไขหลาย ๆ ข้อ (โดยทั่วไปใช้สำหรับค่าบูลีน) มี 3 ประเภท: และ (&&), หรือ (||), และ ไม่ (!).
3.1 และ (&&)
เมื่อทุกเงื่อนไขเป็นจริง ผลลัพธ์ของการดำเนินการ "และ" คือจริง
ตัวอย่าง:
package main
import "fmt"
func main() {
fmt.Println(true && true) // ผลลัพธ์ คือ true
fmt.Println(true && false) // ผลลัพธ์ คือ false
fmt.Println(false && false) // ผลลัพธ์ คือ false
// ผลลัพธ์เป็นจริงเฉพาะเมื่อทุกเงื่อนไขเป็นจริง
}
3.2 หรือ (||)
หากมีอย่างน้อยหนึ่งเงื่อนไขเป็นจริง ผลลัพธ์ของการดำเนินการ "หรือ" คือจริง
ตัวอย่าง:
package main
import "fmt"
func main() {
fmt.Println(true || true) // ผลลัพธ์ คือ true
fmt.Println(true || false) // ผลลัพธ์ คือ true
fmt.Println(false || false) // ผลลัพธ์ คือ false
// ผลลัพธ์เป็นจริงถ้ามีเงื่อนไขอย่างน้อยหนึ่งเป็นจริง
}
3.3 ไม่ (!)
ใช้สำหรับการสลับค่าบูลีนของเงื่อนไข
ตัวอย่าง:
package main
import "fmt"
func main() {
fmt.Println(!true) // ผลลัพธ์ คือ false
fmt.Println(!false) // ผลลัพธ์ คือ true
// สลับค่าบูลีน
}
4 ตัวดำเนินการเปรียบเทียบ
ตัวดำเนินการเปรียบเทียบในภาษา Go ถูกใช้เพื่อเปรียบเทียบตัวแปรหรือค่าสองค่า:
- เท่ากับ (==)
- ไม่เท่ากับ (!=)
- มากกว่า (>)
- น้อยกว่า (<)
- มากกว่าหรือเท่ากับ (>=)
- น้อยกว่าหรือเท่ากับ (<=)
ผลลัพธ์ของการดำเนินการเปรียบเทียบเป็นค่าบูลีน: true
หรือ false
5 ตัวดำเนินการทางตรรกะ
ใน Go ตัวดำเนินการทางตรรกะช่วยให้เราสามารถควบคุมแอ็ตติบิวต์ทวีตอเบิร์นารี่ของข้อมูลโดยตรง:
- แอนด์ทวีตอเบิร์นารี่ (&)
- หรือทวีตอเบิร์นารี่ (|)
- เอ๊กซอร์ทวีตอเบิร์นารี่ (^)
- การเลื่อนซ้ายทวีตอเบิร์นารี่ (<<)
- การเลื่อนขวาทวีตอเบิร์นารี่ (>>)
ตัวดำเนินการทางตรรกะใช้สำหรับการเขียนโปรแกรมระดับต่ำ เช่น การดำเนินการฮาร์ดแวร์โดยตรง การเข้ารหัสและสถานการณ์อื่น ๆ
6 ตัวดำเนินการกำหนดค่า
ตัวดำเนินการกำหนดค่าใช้สำหรับกำหนดค่าให้กับตัวแปร ในภาษา Go มีรูปแบบต่าง ๆ ของตัวดำเนินการกำหนดค่า:
- กำหนดค่าอย่างง่าย (=)
- กำหนดค่าการบวก (+=)
- กำหนดค่าการลบ (-=)
- กำหนดค่าการคูณ (*=)
- กำหนดค่าการหาร (/=)
- กำหนดค่าการโมดูล (%=)
ตัวดำเนินการเหล่านี้ทำให้โค้ดสั้นลง เช่น x += 1
เทียบเท่ากับ x = x + 1
.
7 ตัวดำเนินการพิเศษ
7.1 ตัวดำเนินการเพิ่ม (++ และ --) และ ลด (ตัวดำเนินการ --)
ตัวดำเนินการเพิ่ม (++) และ ตัวดำเนินการลด (--) ถูกใช้เพื่อเพิ่ม 1 และลด 1 จากค่าของตัวแปรตามลำดับ ด้วย ตัวดำเนินการเหล่านี้เท่านั้นในภาษา Go ที่สามารถอัตราหัวควบคูมได้อย่างตรงไปตรงมากับตัวแปรเอง (ไม่ใช่จากนิพลพจน์)
package main
import "fmt"
func main() {
x := 1
x++
fmt.Println("x++ =", x) // แสดงผลเป็น 2
y := 10
y--
fmt.Println("y-- =", y) // แสดงผลเป็น 9
}
โปรดทราบว่าในภาษา Go x++
หรือ x--
ไม่สามารถเป็นส่วนหนึ่งของนิพจน์ได้ เช่น z := x++
ไม่ได้รับอนุญาต
7.2 การแปลงประเภท
ภาษา Go เป็นภาษาที่มีการกำหนดประเภทแบบสถิต ซึ่งหมายความว่าหากประกาศตัวแปรแล้ว ประเภทของมันจะไม่สามารถเปลี่ยนแปลงได้ เพราะฉะนั้น บางครั้งอาจจะจำเป็นต้องแปลงตัวแปรจากประเภทหนึ่งเป็นประเภทอีกประเภทหนึ่ง ภาษา Go ไม่มีการแปลงประเภทโดยอัตโนมัติ การแปลงประเภทแบบชัดแจ้งเป็นสิ่งที่จำเป็น
Example:
package main
import (
"fmt"
)
func main() {
var i int = 42
fmt.Println(float64(i)) // แปลง int เป็น float64
var f float64 = 3.14
fmt.Println(int(f)) // แปลง float64 เป็น int, ทศนิยมจะถูกลบทิ้ง
}
เมื่อทำการแปลงประเภท ควรจะรักษาความปลอดภัยของข้อมูลในระหว่างขั้นตอนการแปลง เช่น การสูญเสียความแม่นยำที่อาจเกิดขึ้นเมื่อแปลงตัวเลขทศนิยมเป็นจำนวนเต็ม