วิธีเพิ่มแท็ก Golang Build

Withi Pheim Thaek Golang Build



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

ตัวอย่างที่ 1: เพิ่มแท็ก Golang Build สำหรับระบบ Linux

ในการกำหนดเป้าหมายระบบปฏิบัติการ Linux เราสามารถเพิ่มแท็กบิลด์ “// +build linux” ได้

//ไปสร้าง linux

// +สร้าง linux

บรรจุุภัณฑ์ หลัก

นำเข้า 'เอฟเอ็มที'

ฟังก์ชั่น หลัก () {

เอฟเอ็มที . พิมพ์ln ( 'ตัวอย่างระบบ Hello Linux' )

}

ที่นี่ เราตั้งค่าข้อจำกัดในการสร้างใน Go ซึ่งระบุว่าควรสร้างโค้ดหากระบบเป้าหมายคือ Linux เท่านั้น หลังจากนั้น เราจะกำหนดแพ็คเกจและนำเข้าคำสั่งที่จำเป็นสำหรับโค้ด จากนั้นเราป้อนเมธอด main() ที่เราพิมพ์ข้อความโดยใช้การเรียก “Println” จากแพ็คเกจ “fmt”







ดังนั้น ข้อความจะปรากฏบนคอนโซลได้สำเร็จสำหรับระบบปฏิบัติการ Linux:





ตัวอย่างที่ 2: เพิ่มแท็ก Golang Build สำหรับระบบ Windows

เมื่อเราเพียงต้องการให้โค้ดทำงานบนแพลตฟอร์ม Windows เราจะใช้แท็กบิลด์ “// +build windows” ที่จุดเริ่มต้นของไฟล์ จากนั้น เราสามารถตรวจสอบให้แน่ใจว่าโค้ดถูกรวมเข้ากับบิลด์เฉพาะเมื่อ Windows เป็นแพลตฟอร์มที่ต้องการเท่านั้น





// +สร้างหน้าต่าง

บรรจุุภัณฑ์ หลัก

นำเข้า 'เอฟเอ็มที'

ฟังก์ชั่น หลัก () {

เอฟเอ็มที . พิมพ์ln ( 'สวัสดี ตัวอย่าง Windows!' )

}

ที่นี่ เราใช้ข้อจำกัดในการสร้าง “// +build windows” เพื่อให้แน่ใจว่าโค้ดจะถูกคอมไพล์และดำเนินการเฉพาะเมื่อสร้างสำหรับแพลตฟอร์ม Windows เท่านั้น หลังจากนั้น เราจะรวมแพ็คเกจที่จำเป็นสำหรับโค้ดพร้อมกับแพ็คเกจและตัวแก้ไขการนำเข้า จากนั้นจะมีฟังก์ชัน main() ซึ่งใช้ฟังก์ชัน println() เพื่อพิมพ์คำสั่งเมื่อสร้างแท็กของหน้าต่างใน Golang

เมื่อเราสร้างและรันโปรแกรมนี้บนระบบ Windows มันจะแสดงข้อความ “Hello, Windows example!” ข้อความไปยังคอนโซล โปรดทราบว่าโปรแกรมจะไม่ถูกสร้างขึ้นหรือดำเนินการบนระบบปฏิบัติการอื่นเนื่องจากข้อจำกัดในการสร้าง



ตัวอย่างที่ 3: เพิ่มแท็ก Golang Build สำหรับระบบที่ไม่ใช่ Windows

ในทางกลับกัน หากเราต้องการยกเว้นโค้ดเมื่อสร้างสำหรับ Windows คุณสามารถใช้เครื่องหมาย “!” เครื่องหมายอัศเจรีย์พร้อมแท็กบิลด์

// +สร้าง !windows

บรรจุุภัณฑ์ หลัก

นำเข้า 'เอฟเอ็มที'

ฟังก์ชั่น หลัก () {

เอฟเอ็มที . พิมพ์ln ( 'สวัสดี ยกเว้นวินโดวส์!' )

}

ที่นี่ เราสร้างคำสั่งข้อจำกัดที่ระบุว่าโค้ดควรถูกสร้างและดำเนินการบนแพลตฟอร์มอื่นที่ไม่ใช่ Windows เครื่องหมายอัศเจรีย์ (!) หน้า Windows หมายความว่าโค้ดนี้ควรรวมอยู่ในทุกแพลตฟอร์ม ยกเว้น Windows จากนั้นเราดำเนินการกับโปรแกรมเดียวกันกับฟังก์ชันก่อนหน้าโดยที่เราเพิ่มแพ็กเกจก่อนและเรียกใช้ฟังก์ชัน main() เพื่อดำเนินการข้อความที่ส่งผ่านภายในฟังก์ชัน println()

ดังนั้นเอาต์พุตจะสร้างข้อความบนคอนโซลระบบปฏิบัติการ โปรดทราบว่าจะไม่ทำงานบนระบบปฏิบัติการ Windows เนื่องจากข้อจำกัดในการสร้าง:

ตัวอย่างที่ 4: เพิ่มแท็ก Golang Build ด้วยตรรกะ OR

หากต้องการรวมโค้ดเมื่อกำหนดเป้าหมายเป็น Windows หรือ Linux เราสามารถใช้แท็กบิลด์ “// +build windows Linux”

// +สร้าง windows Linux

บรรจุุภัณฑ์ หลัก

นำเข้า 'เอฟเอ็มที'

ฟังก์ชั่น หลัก () {

เอฟเอ็มที . พิมพ์ln ( 'เฮ้ ผู้ใช้ Windows หรือ Linux' )

}

ที่นี่ เราใช้ข้อจำกัดในการสร้างกับตรรกะ OR ซึ่งตั้งใจจะสร้างสำหรับทั้งระบบปฏิบัติการ Windows และ Linux บรรทัด “// +build windows Linux” ระบุว่าไฟล์นี้ควรรวมอยู่ในบิลด์เมื่อแพลตฟอร์มเป้าหมายเป็น Windows หรือ Linux ต่อไป เราจะนำเข้าแพ็คเกจ “fmt” จากไลบรารีมาตรฐาน Go ซึ่งมีฟังก์ชันอินพุตและเอาต์พุตพื้นฐาน ในฟังก์ชันหลัก เราจะพิมพ์คำสั่งสตริง “Hey, Windows or Linux Users” โดยใช้ฟังก์ชัน Println() จากแพ็คเกจ “fmt”

ดังนั้นผลลัพธ์จะถูกดึงออกมาดังต่อไปนี้ ข้อความเดียวกันนี้ถูกสร้างขึ้นไม่ว่าเราจะใช้ระบบปฏิบัติการ Windows หรือ Linux:

ตัวอย่างที่ 5: เพิ่มแท็ก Golang Build ด้วยตรรกะ AND

เราสามารถระบุแท็กบิลด์ได้หลายแท็กเพื่อสร้างเงื่อนไขที่ซับซ้อนมากขึ้น คำสั่ง “// +build windows,linux” สามารถใช้เพื่อสร้างโค้ดสำหรับทั้ง Linux และ Windows

// +สร้าง windows,386

บรรจุุภัณฑ์ หลัก

นำเข้า 'เอฟเอ็มที'

ฟังก์ชั่น หลัก () {

เอฟเอ็มที . พิมพ์ln ( 'นี่คือ Windows 32 บิต' )

}

ในที่นี้ ข้อจำกัดในการสร้างที่กำหนดไว้คือ “// +build windows,386” ซึ่งระบุว่าควรรวมไฟล์ Go ไว้ใน build เมื่อแพลตฟอร์มเป้าหมายเป็น Windows 32 บิต โปรดทราบว่าเราใช้เครื่องหมายจุลภาค “,” ระหว่าง Windows และ 386 ซึ่งทำหน้าที่เป็นตัวดำเนินการตรรกะ AND ซึ่งหมายความว่าต้องเป็นไปตามเงื่อนไขทั้งสองจึงจะสามารถรวมโค้ดไว้ในบิลด์ได้

จากนั้น เช่นเดียวกับตัวอย่างก่อนหน้านี้ เรานำเข้าแพ็คเกจ “fmt” จากไลบรารีมาตรฐาน Go เพื่อใช้ฟังก์ชัน Println() สำหรับเอาต์พุต เรามีฟังก์ชัน main() ของโปรแกรมที่คำสั่งถูกส่งผ่านเป็นอาร์กิวเมนต์ไปยังฟังก์ชัน println()

เมื่อเราสร้างและรันโปรแกรมนี้บนระบบ Windows 32 บิต จะแสดงข้อความที่ระบุเป็นเอาต์พุต อย่างไรก็ตาม หากเราพยายามสร้างและรันบนระบบปฏิบัติการหรือสถาปัตยกรรมอื่น มันจะไม่ถูกรวมไว้ในบิลด์:

ตัวอย่างที่ 6: เพิ่มแท็ก Golang Build สำหรับฟังก์ชันเฉพาะ

นอกจากนี้ แท็กบิลด์ยังสามารถนำไปใช้กับฟังก์ชันเฉพาะภายในไฟล์ได้อีกด้วย เนื่องจากข้อจำกัดในการสร้าง ตอนนี้เราสามารถรวมหรือลบฟังก์ชันเฉพาะแบบมีเงื่อนไขได้

บรรจุุภัณฑ์ หลัก

นำเข้า 'เอฟเอ็มที'

ฟังก์ชั่น หลัก () {

เอฟเอ็มที . พิมพ์ln ( 'เฮ้ ขอให้สนุกนะ!' )

พิมพ์ WindowsMessage ()

}

// +สร้างหน้าต่าง

ฟังก์ชั่น พิมพ์ WindowsMessage () {

เอฟเอ็มที . พิมพ์ln ( 'สวัสดีจากระบบปฏิบัติการ Windows' )

}

ตอนนี้เรามาดูวิธี main() ซึ่งใช้วิธี Println() ที่ได้รับจากแพ็คเกจ “fmt” เพื่อพิมพ์ข้อความในตอนเริ่มต้น จากนั้น เราปรับใช้ฟังก์ชัน printWindowsMessage() ด้านล่างฟังก์ชัน main() และระบุข้อจำกัดในการสร้าง “// +build windows” สิ่งนี้บ่งชี้ว่าฟังก์ชันจะรวมอยู่ในบิลด์เมื่อแพลตฟอร์มเป้าหมายคือ Windows เท่านั้น

สุดท้าย เราตั้งค่าฟังก์ชัน printWindowsMessage() เพื่อพิมพ์ข้อความ “Hello From Windows Operating system” ที่ระบุโดยใช้ฟังก์ชัน Println()

ดังนั้นเอาต์พุตจะถูกดึงออกมาซึ่งจะแสดงทั้งข้อความทั่วไปและข้อความเฉพาะแพลตฟอร์ม โปรดทราบว่าหากเราสร้างและรันบนระบบปฏิบัติการอื่น ฟังก์ชัน printWindowsMessage() จะไม่รวมอยู่ใน build และจะแสดงเฉพาะข้อความทั่วไปเท่านั้น:

บทสรุป

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