ในที่สุด ภาษาโปรแกรม Go 1.18 ที่ได้รับการคาดหวังอย่างสูงก็ได้เปิดตัวเป็นเวอร์ชันที่ใช้งานจริง โดยมีความสามารถทั่วไปที่แปลกใหม่ นับเป็นการเปลี่ยนแปลงที่สำคัญที่สุดในการเขียนโปรแกรมภาษา Go นับตั้งแต่เปิดตัว Go 1.0 ในปี 2555 Go 1.18 สามารถดาวน์โหลดได้ที่ go.dev ณ วันที่ 15 มีนาคม
Generics เป็นคุณสมบัติที่ได้รับการร้องขอมากที่สุดจากโปรแกรมเมอร์ Go ซึ่งให้การสนับสนุนสำหรับรหัสทั่วไปโดยใช้ประเภทพารามิเตอร์ การเปิดตัวครั้งต่อๆ ไปมีกำหนดจะให้การสนับสนุนเพิ่มเติมสำหรับกรณีการใช้งานทั่วไปที่ซับซ้อนมากขึ้น ผู้ใช้สามารถเข้าถึงข้อมูลเกี่ยวกับคุณสมบัตินี้ได้ผ่านบทช่วยสอนทั่วไปและ บันทึกประจำรุ่น
เซิร์ฟเวอร์ภาษา Go, gopls และส่วนขยาย Visual Studio Code Go รองรับ generics แล้ว สำหรับคำแนะนำในการติดตั้ง gopls ด้วยชื่อสามัญ โปรดดูเอกสารประกอบ
การเปิดตัวการผลิต Go 1.18 เป็นไปตามขั้นตอนเบต้าและเผยแพร่ผู้สมัคร การเปิดตัวครั้งแรกคาดว่าจะมีขึ้นในเดือนกุมภาพันธ์ พ.ศ. 2565 แต่ล่าช้าไปจนถึงกลางเดือนมีนาคม Go 1.18 Beta 1 ซึ่งเปิดตัวเมื่อวันที่ 14 ธันวาคม เป็นรุ่นตัวอย่างที่สำคัญที่สุดของภาษาโอเพ่นซอร์สที่พัฒนาโดย Google เพื่อรองรับรหัสทั่วไปโดยใช้ประเภทพารามิเตอร์ รุ่นเบต้านี้ยังเป็น Go beta ที่มีการดาวน์โหลดมากที่สุดเท่าที่เคยมีมา โดยมีการดาวน์โหลดมากกว่ารุ่นเบต้าก่อนหน้านี้ถึงสองเท่า
การเขียนโปรแกรมทั่วไปเป็นการเพิ่มประสิทธิภาพที่ช่วยให้สามารถแสดงฟังก์ชันและโครงสร้างข้อมูลในรูปแบบทั่วไปโดยแยกประเภทต่างๆ ออกมา สิ่งนี้อำนวยความสะดวกในการแบ่งปันรหัสและทำให้การสร้างโปรแกรมง่ายขึ้น
ทีมงาน Go แนะนำให้ใช้ความระมัดระวังเมื่อเข้าใกล้ความสามารถทั่วไปใหม่ เนื่องจากข้อบกพร่องใหม่อาจปรากฏขึ้นพร้อมกับคุณสมบัติใหม่ที่สำคัญใดๆ นอกจากนี้ การสนับสนุนสำหรับกรณีที่ละเอียดอ่อนบางอย่าง เช่น ประเภททั่วไปแบบเรียกซ้ำบางประเภท ได้ถูกเลื่อนไปยังการเปิดตัวในอนาคต
แม้จะมีคำเตือนนี้ แต่ก็ยังมีรายงานว่าผู้ใช้กลุ่มแรกพอใจกับฟีเจอร์ใหม่นี้ มีการเผยแพร่บทช่วยสอนสั้นๆ เกี่ยวกับการเริ่มต้นใช้งานยาชื่อสามัญ ที่นี่ แม้ว่า Go จะมีประเภทอินเทอร์เฟซ ซึ่งเป็นรูปแบบหนึ่งของการเขียนโปรแกรมทั่วไป แต่ก็ขาดคุณสมบัติบางประการที่นักพัฒนา Go ต้องการจากประเภททั่วไป ดังที่รายงานในบล็อกโพสต์เดือนกรกฎาคม 2019 ตัวอย่างเช่น ผู้เสนอ Go generics ค้นหาฟังก์ชันเช่น Reverse โดยไม่ต้องกังวลกับประเภทองค์ประกอบของชิ้น
บันทึกย่อ ที่เผยแพร่สำหรับ Go 1.18 ยังเน้นคุณลักษณะหลักอื่นๆ เช่น:
- การสนับสนุนในตัวสำหรับการเขียนการทดสอบโดยใช้ fuzzing เพื่อระบุอินพุตที่ทำให้โปรแกรมหยุดทำงานหรือส่งคืนคำตอบที่ไม่ถูกต้อง คุณลักษณะนี้เป็นการทดลองใน Go 1.18
- โหมดพื้นที่ทำงาน Go ช่วยให้นักพัฒนาสามารถทำงานกับโมดูล Go หลายโมดูลได้พร้อมกัน ซึ่งจำเป็นสำหรับโครงการที่กว้างขวางมากขึ้น
- คำสั่ง go version -m ที่ปรับปรุงแล้วซึ่งบันทึกรายละเอียดบิลด์ เช่น แฟล็กคอมไพเลอร์
- ตัวแปรสภาพแวดล้อม GOAMD64 ช่วยให้ผู้ใช้สามารถเลือกสถาปัตยกรรม AMD64 ได้สี่เวอร์ชัน
- การปรับปรุงประสิทธิภาพของ CPU บน Apple M1, ARM64 และ PowerPC64 มากถึง 20% ซึ่งเป็นผลมาจากการขยายตัวของ Go 1.17 register ABI Calling Convention ไปยังสถาปัตยกรรมเหล่านี้
- พอร์ต Windows/Arm และ Windows/Arm64 รองรับการถอนล่วงหน้าแบบไม่ให้ความร่วมมือ ทำให้ความสามารถนี้พร้อมใช้งานสำหรับพอร์ต Windows ทั้งสี่พอร์ต และอาจแก้ไขบั๊กเล็กน้อยที่พบเมื่อเรียกใช้ฟังก์ชัน Win32 ที่บล็อกเป็นระยะเวลานาน
- ค่าใช้จ่ายการรวบรวมขยะที่คาดเดาได้มากขึ้นเมื่อแหล่งที่มาที่ไม่ใช่ฮีปของงาน GC มีความสำคัญ เนื่องจากการรวมแหล่งที่มาเหล่านี้เมื่อกำหนดความถี่ของการรวบรวมขยะ
Go 1.17 เปิดตัวในเดือนสิงหาคม Go เป็นที่รู้จักกันดีที่สุดสำหรับการใช้ในการพัฒนาระบบคอนเทนเนอร์ Docker และได้รับการออกแบบให้เป็นภาษาโปรแกรมที่เรียบง่ายและเรียนรู้ได้ง่ายพร้อมการสนับสนุนที่แข็งแกร่งสำหรับการทำงานพร้อมกัน สำหรับนักพัฒนาที่ต้องการสำรวจโซลูชัน no-code เช่น แพลตฟอร์มของ AppMaster เพื่อสร้างแอปพลิเคชันบนเว็บ อุปกรณ์พกพา และแบ็คเอนด์ วิธีนี้สามารถช่วยเร่งความเร็วการพัฒนาแอปพลิเคชันและลดค่าใช้จ่ายในขณะที่ขจัดปัญหาทางเทคนิค