Go 1.22 เปิดตัวแล้ว เรียนรู้เกี่ยวกับคุณสมบัติใหม่และการปรับปรุง

โกแลนด์

Go เป็นภาษาโปรแกรมที่คอมไพล์พร้อมกันพร้อมการพิมพ์แบบสแตติกที่ได้รับแรงบันดาลใจจากไวยากรณ์ C

เวอร์ชันใหม่ของ ไป 1.22 มาถึงหกเดือนหลังจากเวอร์ชัน 1.21 ด้วยการเปลี่ยนแปลงที่โดดเด่นหลายประการในชุดเครื่องมือ รันไทม์ การปรับปรุงการเพิ่มประสิทธิภาพ การปรับปรุงคอมไพเลอร์ และไลบรารี

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

คุณสมบัติใหม่หลักของ Go 1.22

ในเวอร์ชันใหม่นี้ซึ่งเปิดตัวจาก Go 1.22 มีไฮไลท์ การเปลี่ยนแปลงสองครั้งในลูป "สำหรับ"เพราะ ก่อนหน้านี้ ตัวแปรที่ประกาศโดย for for loop ถูกสร้างขึ้นเพียงครั้งเดียว และได้รับการอัปเดตในแต่ละรอบ ใน Go 1.22 การวนซ้ำแต่ละครั้งจะสร้างตัวแปรใหม่ เพื่อหลีกเลี่ยงข้อผิดพลาดในการแชร์โดยไม่ตั้งใจอีกด้วย เพิ่มการสนับสนุนการทดลอง (GOEXPERIMENT=rangefunc) สำหรับฟังก์ชันช่วงไปจนถึง for loops ซึ่งช่วยให้คุณระบุฟังก์ชันเป็นตัววนซ้ำและ แก้ไขปัญหาที่มีมายาวนานเกี่ยวกับ for loops ซึ่งทำให้เกิดการเรียก coroutine เพื่อแชร์ตัวแปรลูประหว่างการวนซ้ำ นอกจากนี้ for loops สามารถวนซ้ำผ่านจำนวนเต็มได้แล้ว ตัวอย่างเช่น:

แพ็คเกจการนำเข้าหลัก "fmt" func main() { สำหรับ i := range 10 { fmt.Println(10 - i) } fmt.Println("go1.22 ถอดออก!") }

การเปลี่ยนแปลงที่โดดเด่นอีกประการหนึ่งในเวอร์ชันใหม่นี้คือการเปิดตัว ความสามารถในการใช้ไดเร็กทอรี «ผู้ขาย« ซึ่งมีการพึ่งพาพื้นที่ทำงาน ตอนนี้คำสั่ง คุณสามารถใช้ไดเร็กทอรีนี้ซึ่งสร้างด้วย `ไปทำงานขายของ` และใช้ในคำสั่ง build เมื่อตั้งค่า `- โหมด` ใน «ผู้ขาย« นี่เป็นค่าเริ่มต้นเมื่อมีไดเร็กทอรีอยู่ «ผู้ขาย» ในพื้นที่ทำงาน

สิ่งสำคัญคือต้องทราบว่าการทำงานของ `ไปรับ` ไม่ได้รับการสนับสนุนนอกโมดูลในโหมดอีกต่อไป โกปาท สืบทอดมา อย่างไรก็ตาม คำสั่ง build อื่นๆ เช่น `ไปสร้าง' และ 'ไปทดสอบ' พวกเขาจะยังคงทำงานต่อไปอย่างไม่มีกำหนดสำหรับโปรแกรม GOPATH รุ่นเก่า นอกจากนี้คำสั่ง `ไปเริ่มต้น mod` จะไม่พยายามนำเข้าข้อกำหนดโมดูลจากไฟล์การกำหนดค่าของ « อื่น ๆ อีกต่อไป“การขาย” (เช่น Gopkg.lock)

Go 1.22 แนะนำก แพ็คเกจใหม่ io/ไม่ปลอดภัย ซึ่งมีฟังก์ชันการทำงานกับพอยน์เตอร์และหน่วยความจำที่ไม่ปลอดภัย. แพ็คเกจนี้มีวิธีการแปลงพอยน์เตอร์ไปและกลับจากประเภทที่ปลอดภัยและไม่ปลอดภัย ตลอดจนการดำเนินการคัดลอกหน่วยความจำโดยไม่มีการตรวจสอบขอบเขต

งานยังคงรวมการปรับให้เหมาะสมในคอมไพเลอร์ตามผลลัพธ์ของ pการทำโปรไฟล์รหัส PGO และนั่นคือ ตอนนี้คอมไพเลอร์ใช้เครื่องมือ devirtualization เพื่อแทนที่การโทรทางอ้อม ของวิธีการต่างๆ พร้อมการดำเนินการบล็อกแบบอินไลน์แบบขยาย เมื่อเปิดใช้งาน PGO การเปลี่ยนแปลงที่เพิ่มเข้ามาช่วยปรับปรุงประสิทธิภาพของโปรแกรมส่วนใหญ่ 2% ถึง 14%

ในเวอร์ชั่นของ ไปสำหรับ Windows โปรแกรมที่เชื่อมโยงหรือโหลดไลบรารี ไปสร้างด้วย. -buildmode=c-เก็บถาวร o -buildmode=c-แชร์ ตอนนี้สามารถใช้ Event Logging Windows (ETW) API ได้แล้ว ผ่านแพ็คเกจใหม่ รันไทม์/การติดตาม y ตะขอติดตามซึ่งใช้โปรโตคอลการรวบรวมการติดตามเหตุการณ์ Go ในฐานะผู้ให้บริการ ETW

การเปลี่ยนแปลงอื่น ๆ ที่โดดเด่น:

  • คำสั่ง ไปทดสอบ -cover ตอนนี้พิมพ์สรุปความครอบคลุมสำหรับแพ็คเกจที่ครอบคลุมซึ่งไม่มีไฟล์ทดสอบของตัวเอง
  • ระบบปฏิบัติการ/ผู้บริหารมีการเพิ่มความสามารถในการกำหนดแอตทริบิวต์บริบท ทำให้คุณสามารถตั้งค่าต่างๆ เช่น ไดเร็กทอรีการทำงาน ตัวแปรสภาพแวดล้อม และตัวอธิบายไฟล์อินพุต/เอาท์พุตสำหรับคำสั่งที่ดำเนินการ
  • เพิ่มประสิทธิภาพการจัดการหน่วยความจำในรันไทม์ ส่งผลให้ประสิทธิภาพเพิ่มขึ้น 1-3% และลดการใช้หน่วยความจำสำหรับแอปพลิเคชันส่วนใหญ่ลง 1%
  • บรรจุภัณฑ์ สุทธิ/http, มีการเพิ่มฟังก์ชันแล้ว ปิดการเชื่อมต่อที่ไม่ได้ใช้งาน ไปยังไคลเอนต์ HTTP ซึ่งจะปิดการเชื่อมต่อที่ไม่ได้ใช้งานทั้งหมดที่ไคลเอนต์เพิ่งใช้
  • มีการเพิ่มการใช้งานเชิงทดลองที่ได้รับการปรับปรุง (GOEXPERIMENT=newinliner) ของกลไกการแทรกการโทรลงในคอมไพลเลอร์ ซึ่งใช้การวิเคราะห์พฤติกรรมเพื่อแยกการดำเนินการที่สำคัญออกจากการดำเนินการที่ไม่สำคัญ
  • เพิ่มแพ็คเกจแล้ว » คณิตศาสตร์/แรนด์/v2 » ไปยังไลบรารีมาตรฐาน ซึ่งมี API ที่สอดคล้องกันมากขึ้น และใช้อัลกอริธึมที่เร็วกว่าเพื่อสร้างตัวเลขสุ่มเทียม
  • บรรจุภัณฑ์ net/http.ServeMux เพิ่มความสามารถในการระบุวิธีการและมาสก์ในเทมเพลต

สุดท้ายนี้ หากคุณคือ สนใจที่จะทราบข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ คุณสามารถตรวจสอบรายละเอียด ในลิงค์ต่อไปนี้.


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. ผู้รับผิดชอบข้อมูล: Miguel ÁngelGatón
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา