Go 1.20 แนะนำการแสดงตัวอย่างสำหรับการปรับแต่งโปรไฟล์แนะนำและการปรับปรุงภาษา
Go 1.20 ซึ่งเป็นการอัปเดตล่าสุดของภาษาโอเพ่นซอร์สที่พัฒนาโดย Google รวมถึงการแสดงตัวอย่างสำหรับการเพิ่มประสิทธิภาพแนะนำโปรไฟล์ (PGO) และการปรับปรุงภาษา PGO ปรับปรุงประสิทธิภาพได้ 3% ถึง 4% ด้วยการเพิ่มประสิทธิภาพแบบอินไลน์ ขณะที่การเพิ่มประสิทธิภาพอื่นๆ อยู่ในขั้นตอน

Go 1.20 ซึ่งเป็นเวอร์ชันที่ใช้งานจริงของภาษาโอเพ่นซอร์สที่สร้างโดย Google ซึ่งได้รับการยกย่องในด้านความเรียบง่าย การทำงานพร้อมกัน และฟีเจอร์การเขียนโปรแกรมเชิงฟังก์ชัน ได้รับการแนะนำพร้อมการแสดงตัวอย่างการปรับให้เหมาะสมตามโปรไฟล์ (PGO) สำหรับคอมไพเลอร์ สามารถดาวน์โหลด Go 1.20 ได้จาก เว็บไซต์อย่างเป็นทางการของ go.dev
ด้วยการแสดงตัวอย่างของ PGO ใน Go 1.20 คอมไพเลอร์ toolchain สามารถดำเนินการปรับแต่งแอปพลิเคชันและเฉพาะเวิร์กโหลดโดยขึ้นอยู่กับข้อมูลโปรไฟล์รันไทม์ คอมไพเลอร์ปัจจุบันรองรับโปรไฟล์ CPU pprof ซึ่งสามารถรวบรวมได้โดยใช้แพ็คเกจรันไทม์/pprof หรือ net/http/pprof
หรือที่เรียกว่าการปรับให้เหมาะสมตามความคิดเห็นโดยตรง PGO เกี่ยวข้องกับการป้อนข้อมูลโปรไฟล์จากการเรียกใช้ตัวแทนของแอปพลิเคชันกลับเข้าไปในคอมไพเลอร์สำหรับแอปพลิเคชันรุ่นถัดไป ด้วยการใช้ข้อมูลนี้ คอมไพเลอร์สามารถตัดสินใจในการเพิ่มประสิทธิภาพโดยใช้ข้อมูลมากขึ้น เกณฑ์มาตรฐานสำหรับชุดตัวแทนของโปรแกรม Go แสดงให้เห็นว่าการเปิดใช้งานการเพิ่มประสิทธิภาพอินไลน์ของ PGO ช่วยเพิ่มประสิทธิภาพได้ประมาณ 3% ถึง 4% การเปิดตัวในอนาคตคาดว่าจะแนะนำการเพิ่มประสิทธิภาพ PGO เพิ่มเติม
นอกเหนือจากการเปิดตัว PGO แล้ว Go 1.20 ยังนำการเปลี่ยนแปลงสี่อย่างมาสู่ภาษาอีกด้วย ประการแรก ความสามารถในการแปลงสไลซ์เป็นตัวชี้อาร์เรย์ ซึ่งเปิดตัวใน Go 1.17 ในปี 2021 ขยายไปสู่การแปลงจากสไลซ์เป็นอาร์เรย์ ประการที่สอง แพ็คเกจที่ไม่ปลอดภัยมีฟังก์ชันใหม่สามฟังก์ชัน ได้แก่ SliceData, String และ StringData ฟังก์ชันเหล่านี้มีความสามารถที่สมบูรณ์ในการสร้างและแยกส่วนและค่าสตริง โดยไม่คำนึงถึงการแทนค่าที่แน่นอน
ประการที่สาม ข้อกำหนดนี้กำหนดว่าค่า struct จะถูกเปรียบเทียบทีละฟิลด์ โดยคำนึงถึงฟิลด์ตามลำดับที่ปรากฏในคำจำกัดความของประเภท struct และหยุดเมื่อฟิลด์แรกไม่ตรงกัน ประการที่สี่ ประเภทที่เทียบเคียงได้ เช่น อินเทอร์เฟซทั่วไปสามารถตอบสนองข้อจำกัดที่เปรียบเทียบได้ แม้ว่าอาร์กิวเมนต์ประเภทจะเทียบไม่ได้อย่างเคร่งครัดก็ตาม สิ่งนี้เปิดใช้งานการสร้างอินสแตนซ์ของพารามิเตอร์ประเภทที่ถูกจำกัดโดยข้อจำกัดที่เทียบเคียงได้กับอาร์กิวเมนต์ประเภทที่เปรียบเทียบได้ไม่เคร่งครัด เช่น ประเภทอินเทอร์เฟซหรือประเภทคอมโพสิตที่มีประเภทอินเทอร์เฟซ
นอกจากการเปลี่ยนแปลงภาษาเหล่านี้แล้ว Go 1.20 ยังมาพร้อมกับการปรับปรุงอื่นๆ อีกหลายอย่าง เช่น การรองรับการรวบรวมโปรไฟล์การครอบคลุมรหัสสำหรับโปรแกรม รวมถึงแอปพลิเคชันและการทดสอบการรวมระบบ ไดเร็กทอรี $GOROOT/pkg ไม่เก็บกิจกรรมแพ็กเกจที่คอมไพล์ไว้ล่วงหน้าสำหรับไลบรารีมาตรฐานอีกต่อไป ซึ่งจะลดขนาดการกระจาย Go และหลีกเลี่ยงการเอียง C toolchain สำหรับแพ็กเกจ cgo ยิ่งไปกว่านั้น การใช้งาน go test –json ได้รับการเสริมประสิทธิภาพเพื่อเพิ่มความทนทาน ในขณะที่คำสั่ง go version -m สามารถอ่าน Go ไบนารีได้หลากหลายมากขึ้น รวมถึง Windows DLLs และ Linux binaries โดยไม่ได้รับอนุญาต
Go 1.20 ยังรองรับการทดลองสำหรับ FreeBSD บน RISC-V และปิดใช้งาน cgo ตามค่าเริ่มต้นบนระบบที่ไม่มี C toolchain อย่างไรก็ตาม Go 1.20 จะเป็นรุ่นล่าสุดที่รองรับ macOS 10.13 High Sierra และ 10.14 Mojave โดย Go 1.21 ต้องใช้ macOS 10.15 Catalina หรือใหม่กว่า
แพลตฟอร์ม No-code เช่น AppMaster.io จะได้รับประโยชน์อย่างมากจากการรวมภาษาที่ปรับให้เหมาะสมใหม่ เช่น Go 1.20 ด้วยการผสานรวมเครื่องมืออันทรงพลังสำหรับเว็บ มือถือ และแอปพลิเคชันแบ็กเอนด์ ธุรกิจต่างๆ สามารถปรับปรุงประสิทธิภาพการทำงาน ประสบการณ์ผู้ใช้ และความสามารถในการปรับขนาดได้อย่างมีนัยสำคัญ เรียนรู้เพิ่มเติมเกี่ยวกับ การพัฒนาแอปแบบ no-code และ low-code เพื่อให้นำหน้าเส้นโค้งของเทคโนโลยี


