สรุปการเปลี่ยนแปลงของ Module ใน Go 1.16

Go 1.16 ออกมาแล้ว ขอสรุปสรุปการเปลี่ยนแปลงที่เกียวข้องกับ Module ดังนี้: Module Mode จะถูกเปิดเป็นค่า Default โดยเราสามารถปิดมันได้ ถ้ายังมี Project ที่ยังไม่ได้ใช้ Module (ยังใช้ GOPATH Mode อยู่) ด้วยคำสั่ง go env -w GO111MODULE=auto แต่… ตั้งแต่ Go 1.17 เป็นต้นไปจะไม่ Support GOPATH Mode  อีกแล้ว แปลว่าเราควร Migrate ไปใช้ Module Mode ได้แล้ว go.mod กับ go.sum จะไม่ถูกอัพเดทโดยอัตโนมัติแล้ว เช่น เวลาเราใช้คำสั่ง go run หรือ go build แล้วมี Module ที่ใช้แต่ไม่ได้ Require ไว้ มันจะไม่ถูกอัพเดทใน go.mod ให้โดยอัตโนมัติ แสดงว่าเราจะต้องแก้ไขไฟล์ go.mod เองหรือไม่ก็ต้องใช้คำสั่ง…

Shall we Go ตอนที่ 8 – Basic Types

เว้นจากตอนที่ 7 มาเกือบปี ช่วงนี้ก็มีงานที่ต้องเขียน Go บ้าง โดยเฉพาะ Microservices ที่เน้นความเสถียรมากๆ มาตอนที่ 8 เรามาดูกันว่า Go มี Basic Type ที่ใช้ประจำๆอะไรบ้าง bool fmt.Println(true && false) // false   fmt.Println(true || false) // true var boolVar bool if !boolVar { fmt.Printf("Default value of boolVar is `%v`\n", boolVar) // Default value of boolVar is `false` } boolVar = true if boolVar…

Shall we Go ตอนที่ 7 – Variable

ตอนนี้เราจะมาศึกษาเรื่อง Variable หรือ var กัน Variable Declaration การประกาศตัวแปร var someInteger int var someText string var someDecimal float64 var one, two, three int var ( pass bool fail bool )var someInteger int var someText string var someDecimal float64 var one, two, three int var ( pass bool fail bool ) Variable Declaration with Initialization การประกาศตัวแปรและกำหนดค่าเริ่มต้น var…

Shall we Go ตอนที่ 6 – Function

เราเรียนรู้ Go กันมาหลายตอนแล้ว คิดว่าคงจะเริ่มคุ้นเคยกับภาษานี้บ้างแล้ว โดยเฉพาะ Function เราเคยเขียน main() และ Uppercase() จากตอนก่อนๆ ตอนนี้เราจะมาดูเรื่อง Function เพิ่มเติมกัน โครงสร้างเบื้องต้นของ Function อธิบายด้วย Code จะเข้าได้ง่ายกว่า func divide(num int) float64 { return float64(num) / 2 }func divide(num int) float64 { return float64(num) / 2 } จาก Code ข้างต้น: Function นี้ชื่อ divide Parameter มี 1 ตัว ชื่อ num มี type เป็น int Return…

Shall we Go ตอนที่ 5 – TDD: Test Driven Development

จากตอนที่แล้ว เรามีการสร้าง lib ตัวนึงชื่อว่า stringutil วันนี้เราจะมาเพิ่ม feature ให้กับ lib ตัวนี้ เราจะพัฒนาด้วย TDD: Test Driven Development คือเราจะเขียน Test ก่อน แล้วจึงเขียน Code เพื่อให้ Test ผ่าน ถ้ายังไม่มี github.com/shall-we-go/stringutil ให้ใช้คำสั่ง $ go get github.com/shall-we-go/stringutil โครงสร้าง file และ directory จะประมาณนี้: $GOPATH/ src/ github.com/ shall-we-go/ stringutil/ .git/ reverse.go reverse_test.go ตอนนี้เรามี function Reverse() รวมถึง test ของมันคือ TestReverse() reverse.go 1 2 3 4…

Shall we Go ตอนที่ 4 – โครงสร้าง file และ directory ของ Go project

ตอนนี้มาปูพื้นฐานความเข้าใจโครงสร้าง file และ directory ของ Go project กัน โจทย์ตัวอย่างเราจะมี Main Program 1 ตัว และมี Library อีก 1 ตัว สามารถ download source code ได้ที่: https://github.com/shall-we-go/stringutil https://github.com/shall-we-go/reverse-hello-world โครงสร้าง file และ directory $GOPATH/ src/ github.com/ shall-we-go/ stringutil/ .git/ reverse.go reverse_test.go reverse-hello-world/ .git/ main.go ข้อสังเกตุ โครงสร้าง และ directory จะสัมพันธ์กับ URL ของ Git repo จากตัวอย่างเราจะมี repo อยู่ที่ https://github.com/shall-we-go/stringutil และ https://github.com/shall-we-go/reverse-hello-world…

Shall we Go ตอนที่ 3 – Hello World

ตอนนี้มาลองเขียน Go กันบ้างดีกว่า ก็เขียนโปรแกรม Hello World ตามนิยม สร้างไฟล์ helloworld.go ใน path $GOPATH/src เช่น /Users/choopong/go บน macOS หรือ C:\Users\choopong\go บน Windows โดย path นี้จะใช้เก็บ source code ของเราทั้งหมด แต่จะแบ่ง path ย่อยตาม package ใส่ code ตามนี้ 1 2 3 4 5 6 7 8 9 package main   import ( "fmt" )   func main() { fmt.Println("Hello World")…

Shall we Go ตอนที่ 2 – ติดตั้ง Go บน Windows และ macOS กัน

เริ่มจาก Windows ก่อนละกัน ให้ไป download Go MSI installer (.msi) จากนั้นก็ click install ตามปกติ ค่า default ของ GOPATH จะเป็น %USERPROFILE%\go เช่น C:\Users\choopong\go ถ้าจะเก็บ Go project ไว้ที่ path อื่นต้อง set %GOPATH% เอง ต่อมาฝั่ง macOS บ้าง มีทางเลือก 2 วิธี: วิธีที่ 1 – macOS package installer ให้ไป download Go macOS package installer (.pkg) จากนั้นก็ click install ตามปกติ ค่า default…

Shall we Go ตอนที่ 1 – เหตุผล 5 ข้อที่เราควรศึกษา Go Programming Language

ทำไมเราควรศึกษา Go? Go เป็น Compiled Language ทำให้มันเร็วตั้งแต่กำเนิด เร็วกว่า พวก Scripting Languages เช่น PHP, Ruby, Python, NodeJS หรือ JVM Languages เช่น Java, Scala, Kotlin Go เป็นภาษาที่ไม่ซับซ้อน มี keyword แค่ 25 ตัว (ไม่นับ easter egg keywords) Go มี Automated Test และ Code Coverage tools มาให้เลย Go ถูกออกแบบตั้งแต่กำเนิดให้ทำงานแบบ Concurrency (ทำงานหลายอย่างในเวลาเดียวกัน) สุดท้าย Go มี backup เป็น Google ซึ่งสร้างความมั่นใจได้ในระดับนึงถึง support…