0Pricing
DevOps Bootcamp · บทเรียน

ผสานข้อมูลเชิงลึกด้วย mergeOverwrite และ dict

ประกอบค่าที่มีโครงสร้างด้วยโปรแกรม

ผสานข้อมูลเชิงลึกด้วย mergeOverwrite และ dict เป็นบทเรียน DevOps Bootcamp ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน DevOps Bootcamp และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน

สร้างแมปในเทมเพลต

บางครั้งคุณจำเป็นต้องประกอบแมปขึ้นภายในเทมเพลต ฟังก์ชัน dict จะสร้างแมปจากคู่คีย์และค่าที่เรียงสลับกัน

{{ $cfg := dict "level" "info" "json" true }}

เหตุผลที่ต้องรวมแมป

บ่อยครั้งคุณมีค่าเริ่มต้นของชาร์ตและค่าที่ผู้ใช้เขียนทับ และต้องการแมปที่รวมเป็นหนึ่งเดียว นั่นคือสิ่งที่ merge สร้างขึ้นโดยตรง

การผสานแบบตื้น

ฟังก์ชัน merge จะคัดลอกคีย์จากแมปต้นทางไปยังปลายทาง แต่จะคงค่าปลายทางไว้เมื่อมีคีย์นั้นอยู่แล้ว

{{ $out := merge $user $defaults }}

merge ให้ความสำคัญกับปลายทาง

เมื่อใช้ merge อาร์กิวเมนต์แรกจะมีผลเหนือกว่าหากคีย์ขัดแย้งกัน จึงเหมาะเมื่ออินพุตของผู้ใช้ควรเขียนทับค่าเริ่มต้นของคุณ

พบกับ mergeOverwrite

ฟังก์ชัน mergeOverwrite ทำงานตรงกันข้าม โดยแมปต้นทางที่อยู่ถัดไปจะเขียนทับปลายทาง และซ้อนค่าลงด้านบน

{{ $out := mergeOverwrite $defaults $user }}

การผสานแบบลึก ไม่ใช่แบบตื้น

ตัวช่วยทั้งสองทำการผสานแบบ recursively โดยรวมแมปที่ซ้อนอยู่ทีละคีย์ แทนที่จะแทนที่ทรีย่อยทั้งหมดในครั้งเดียว

คำเตือนเรื่องการเปลี่ยนแปลงค่า

โปรดระวัง: merge และ mergeOverwrite จะเปลี่ยนอาร์กิวเมนต์แรกโดยตรง หากต้องการคงต้นฉบับไว้ ให้ส่ง dict ใหม่เข้าไป

{{ $base := dict }}{{ $r := mergeOverwrite $base .Values.extra }}

รูปแบบค่าเริ่มต้นแบบซ้อนชั้น

รูปแบบที่ใช้กันทั่วไปคือเริ่มจาก dict ของค่าเริ่มต้น แล้วซ้อนค่าของผู้ใช้ไว้ด้านบน เพื่อให้คีย์ที่ไม่ได้กำหนดใช้ค่าเผื่อกลับอย่างปลอดภัย

{{ $merged := mergeOverwrite (dict "port" 80) .Values.service }}

อ่านค่าที่ผสานแล้ว

เมื่อผสานแล้ว คุณจะใช้งานผลลัพธ์เหมือนแมปทั่วไป และดึงคีย์ออกมาด้วย dot หรือฟังก์ชัน index ตามปกติ

{{ $merged.port }}

แปลงผลลัพธ์เป็นรูปแบบจัดเก็บ

หากต้องการส่งโครงสร้างที่ผสานแล้วออกมาเป็น YAML ให้ไพป์ผ่าน toYaml และ nindent เพื่อให้บล็อกอยู่ในระดับการเยื้องที่ถูกต้อง

{{ toYaml $merged | nindent 4 }}

เลือกคีย์หนึ่งรายการ

เมื่อชื่อคีย์เปลี่ยนแปลงได้หรือมีอักขระพิเศษ ให้เข้าถึงแมปด้วยฟังก์ชัน index แทนการเข้าถึงด้วย dot

{{ index $merged "log-level" }}

ตรวจสอบอย่างรวดเร็ว

ตรวจสอบทิศทางการเขียนทับอย่างรวดเร็ว

สรุปทบทวน

คุณได้รู้จัก dict สำหรับสร้างแมป merge สำหรับคงคีย์ของปลายทาง และ mergeOverwrite สำหรับให้ค่าที่อยู่ถัดไปมีผลเหนือกว่า โดยทั้งหมดเป็นการผสานแบบลึก 🎉

คำถามที่พบบ่อย

บทเรียน “ผสานข้อมูลเชิงลึกด้วย mergeOverwrite และ dict” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ผสานข้อมูลเชิงลึกด้วย mergeOverwrite และ dict” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส DevOps Bootcamp ให้อัปเกรดเป็น CoddyKit PRO คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ผสานข้อมูลเชิงลึกด้วย mergeOverwrite และ dict”

ประกอบค่าที่มีโครงสร้างด้วยโปรแกรม คุณปฏิบัติ DevOps Bootcamp ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน DevOps Bootcamp หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน DevOps Bootcamp บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “ผสานข้อมูลเชิงลึกด้วย mergeOverwrite และ dict” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน DevOps Bootcamp นี้ได้ไหม

ได้ บทเรียน DevOps Bootcamp ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ผสานข้อมูลเชิงลึกด้วย mergeOverwrite และ dict
  2. tpl: ประมวลผลสตริงจากค่า
  3. วนซ้ำไฟล์ด้วย range บน .Files.Glob
  4. fail และตัวป้องกันการตรวจสอบแบบกำหนดเอง
← กลับไปที่ DevOps Bootcamp