
สวัสดีครับ ในบทความนี้ก็เป็น EP.10 แล้วนะครับ โดยเนื้อหาจะเป็นเรื่องเกี่ยวกับ Defer คืออะไร ใช้ทําอะไร
สําหรับท่านใดที่ยังไม่ได้อ่าน EP.9 ท่านสามารถกลับไปอ่านก่อนได้นะครับที่นี่ Go EP.9 Go Context
มาเริ่มเรียนรู้ไปด้วยกันตามหัวข้อด้านล่างเลยครับ
Defer คือการสั่งที่ทําให้ คําสั่งที่ถูก Defer ไปรันก่อนที่จะจบ Function ครับ ลองดูตัวอย่างนี้ครับ
package main
import "fmt"
func main() {
defer fmt.Println("world")
fmt.Println("hello")
}
//Output:
//hello
//world
จาก Code ด้านบน จะเห็นว่า Output จะ print “hello” ออกมาก่อน แล้วตามด้วยคําสั่งที่ถูก Defer คือ print “world”
กรณีที่ใช้ Defer หลายๆครั้ง การทํางานของ Defer จะเป็นแบบนี้ครับ คือ ทุกครั้งที่ใช้ Defer จะเอาคําสั่ง Push ลงไปใน Stack และเมื่อจบ Function จะ POP คําสั่งออกมาทําทีละคําสั่งครับ ลองดูตามตัวอย่างนี้ครับ
package main
import "fmt"
func main() {
defer fmt.Println("step3")
defer fmt.Println("step2")
fmt.Println("step1")
}
//Output:
//step1
//step2
//step3
จาก code ด้านบน จะเห็นว่าจะทําคําสั่ง Defer ล่างสุดก่อนครับ
มาดูอีกตัวอย่างครับ กรณีที่ใช้งาน Defer ซ้อนอยู่ใน Function การทํางานก็จะเป็นตามตัวอย่างนี้เลยครับ
package main
import "fmt"
func main() {
defer myFunction()
defer fmt.Println("step3")
defer fmt.Println("step2")
fmt.Println("step1")
}
func myFunction() {
defer fmt.Println("step5")
defer fmt.Println("step4")
}
//Output:
//step1
//step2
//step3
//step4
//step5
ความสามารถอีกอย่างของ Defer คือยังสามารถทํางานได้อยู่ถึงแม้ว่าก่อนจบ Function จะเกิด Runtime error มาดูตัวอย่างกันครับ
package main
import "fmt"
func main() {
defer fmt.Println("my defer still work")
arr := [...]int{1, 2, 3}
for i:=0 ; i<6 ; i++ {
fmt.Printf("%d\n", arr[i])
}
}
Output จะได้ประมาณนี้ครับ

สําหรับการใช้งาน Defer ก็ประมาณนี้นะครับ
แล้วเจอกันใหม่บทความหน้านะครับ ขอบคุณครับ
สวัสดีครับ ในบทความนี้อธิบายถึงวิธีการ Tag และ push Image ที่เราสร้างขึ้นไปใว้ใน Docker Registry (hub.docker.com) ก่อนที่จะเริ่มเข้าเรื่อง ถ้าอ่านมาถึงตอนนี้แล้วยัง งงๆ ให้กลับไปอ่านเรื่อง สร้าง Docker Image ก่อนครับเพราะเนื่อหาในบทความนี้จะต่อเนื่องกันครับ ก่อน push image ของเราขึ้น Docker Registry ให้เราไปสมัคร account ของ hub.docker.com เมื่อเรียบร้อยผมจะอธิบายโดยแบ่งเป็นสองขั้นตอนดังนี้
สวัสดีครับ วันนี้ผมได้ไปเจออุปกรณ์ที่ผมทําขึ้นไว้มื่อหลายปีก่อน ที่ทําจากของเหลือใช้ มันคือไฟฉายที่ใช้พลังงานแสงอาทิตย์ สามารถไว้ใช้ในยามฉุกเฉิน เช่น นํ้าท่วม ไฟฟ้าไม่สามารถใช้ได้เป็นเวลานานๆ, Camping ฯลฯ ผมจึงมาสอนวิธีการทําให้ผู้ที่สนใจได้ทําไว้ใช้งานกัน เน้นทํางายๆ อุปกรณ์น้อยๆ :)
เป็น passport สำหรับการท่องเที่ยวอุทยานแห่งชาติในเมืองไทย จัดทำขึ้นโดย ส่วนนันทนาการและสื่อความหมาย สำนักอุทยานแห่งชาติ กรมอุทยานแห่งชาติ สัตว์ป่า และพืชพันธ์ สามารถหาซื้อได้จากที่ทำการอุทยานแห่งชาติทุกที่ แต่ค่อนข้างหาซื้อยากครับเนื่องจากปีนึงจะจัดทำขึ้นปีละไม่กี่พันเล่ม