Go:
การใช้ Shell แบบโต้ตอบ (REPL)

วิธีการ:

แม้ Go จะไม่มี REPL ติดตั้งมาด้วย แต่ชุมชนได้สร้างเครื่องมือเช่น gore เพื่อเติมเต็มช่องว่างนี้ ขั้นแรก ติดตั้ง gore โดยรัน:

$ go get -u github.com/motemen/gore

เมื่อติดตั้งเสร็จ ให้เปิด gore โดยพิมพ์ gore ในเทอร์มินัลของคุณ:

$ gore

คุณควรจะเห็นพร้อมต์พร้อมที่จะรับคำสั่ง Go ลองดูตัวอย่างง่ายๆ:

gore> :import fmt
gore> fmt.Println("Hello, Go REPL!")

คุณจะเห็นผลลัพธ์เช่น:

Hello, Go REPL!

การสร้างตัวแปรและนิยามฟังก์ชันทำงานตามที่คาดหวังได้ คุณสามารถประกาศฟังก์ชันได้:

gore> :import math
gore> areaCircle := func(radius float64) float64 {
...> return math.Pi * radius * radius
...> }
gore> fmt.Println("พื้นที่วงกลมที่มีรัศมี 4:", areaCircle(4))

และรับผลลัพธ์ทันที:

พื้นที่วงกลมที่มีรัศมี 4: 50.26548245743669

ลงลึก:

ความคิดของ REPL นั้นเป็นที่เก่าแก่ ย้อนกลับไปถึงเครื่อง Lisp ในยุค 1960s ซึ่งให้ประสบการณ์การเขียนโปรแกรมแบบโต้ตอบ ต่างจากภาษาอย่าง Python หรือ JavaScript Go ถูกออกแบบมาโดยไม่มี REPL โดยโฟกัสไปที่ไบนารีที่คอมไพล์สำหรับประสิทธิภาพและความเรียบง่าย นี่สะท้อนถึงปรัชญาของ Go ที่เน้นความเรียบง่าย และการออกแบบเพื่อซอฟต์แวร์ที่ขยายขนาดได้และรักษาความได้

อย่างไรก็ตาม เครื่องมือเช่น gore หรือ goplay แสดงให้เห็นถึงความคล่องตัวของชุมชน Go ในการเชื่อมโยงช่องว่างนี้ เครื่องมือเหล่านี้วิเคราะห์โค้ด Go แบบไดนามิคและใช้แพ็กเกจ go/eval หรือกลไกคล้ายคลึงกันเพื่อรันมันแบบเรียลไทม์ แม้ว่าจะมีข้อจำกัดบ้างเมื่อเทียบกับสภาพแวดล้อม REPL ท้องถิ่น ข้อจำกัดเหล่านี้เกิดจากระบบประเภทและโมเดลการคอมไพล์ของ Go ซึ่งอาจทำให้การประเมินค่าแบบทันทีเป็นเรื่องยาก

ในขณะที่สภาพแวดล้อม REPL มีประโยชน์อย่างยิ่งสำหรับการศึกษาและการทดสอบอย่างรวดเร็ว ระบบนิเวศ Go โดยปกติแล้วจะเอนเอียงไปที่กระบวนการคอมไพล์และรันแบบดั้งเดิมสำหรับงานพัฒนาส่วนใหญ่ IDE และเอดิเตอร์ที่รองรับ Go เช่น Visual Studio Code หรือ GoLand นำเสนอเครื่องมือที่รวมอยู่แล้วสำหรับการทดสอบและการดีบักที่บรรเทาความต้องการของ REPL สำหรับการพัฒนามืออาชีพ

สำหรับการเขียนโปรแกรมที่สำรวจ การสร้างต้นแบบ หรือการเรียนรู้ อย่างไรก็ตาม REPL อย่าง gore นำเสนอทางเลือกที่มีค่า ช่วยให้โปรแกรมเมอร์ที่ชินกับ REPL ในภาษาอื่นได้สัมผัสประสบการณ์ที่คล้ายคลึงใน Go