Versi terbaharu rangka kerja Go memperkenalkan perubahan pecah berikut: Pengendalian ralat yang dipertingkatkan: Ralat.Is dan ralat. Fungsi As memudahkan pengendalian ralat. generik: Meningkatkan kebolehgunaan semula kod dan fleksibiliti, membolehkan penciptaan kod generik. Skop leksikal terbenam: Skop peringkat blok bersarang meningkatkan kebolehbacaan dan kebolehselenggaraan kod. Kes praktikal: aplikasi yang menunjukkan ciri baharu dengan membina API REST.
Versi rangka kerja Go terkini memperkenalkan banyak ciri baharu yang menarik dan peningkatan yang meningkatkan pengalaman pembangun. Mari kita terokai beberapa perubahan utama ini dan tunjukkan aplikasinya melalui contoh praktikal.
Go 1.18 memperkenalkan errors.Is
和 errors.As
函数,使错误处理更加方便。errors.Is
可用于检查错误是否与特定错误匹配,而 errors.As
baharu yang boleh digunakan untuk menukar ralat kepada jenis tertentu.
import "errors" var ( ErrNotFound = errors.New("not found") ErrUnauthorized = errors.New("unauthorized") ) func main() { err := GetResource() if errors.Is(err, ErrNotFound) { // Not found error handling } else if errors.As(err, &ErrUnauthorized) { // Unauthorized error handling } }
Go 1.18 juga memperkenalkan generik, membolehkan pembangun mencipta kod generik yang boleh digunakan untuk pelbagai jenis parameter. Ini sangat meningkatkan kebolehgunaan semula dan fleksibiliti kod.
func Max[T any](a, b T) T { if a > b { return a } return b } func main() { fmt.Println(Max(1, 2)) // Output: 2 fmt.Println(Max(3.14, 4.5)) // Output: 4.5 }
Go 1.17 memperkenalkan skop leksikal terbenam, membolehkan skop peringkat blok bersarang dalam skop lain. Ini meningkatkan kebolehbacaan dan kebolehselenggaraan kod.
func main() { if value := 10; value > 5 { fmt.Println("Value is greater than 5") } }
Bagaimanakah ciri baharu ini boleh digunakan untuk pembangunan sebenar? Mari bina API REST mudah menggunakan versi rangka kerja Go baharu.
// main.go package main import ( "fmt" "net/http" ) func main() { http.HandleFunc("/", IndexHandler) fmt.Println("Listening on port 8080") http.ListenAndServe(":8080", nil) } func IndexHandler(w http.ResponseWriter, r *http.Request) { w.Write([]byte("Hello, world!")) }
Versi terbaharu rangka kerja Go membawa perubahan ketara yang meningkatkan pengalaman pembangun. Dengan memperkenalkan pengendalian ralat, generik, skop leksikal terbina dalam dan banyak lagi, Go menjadi lebih fleksibel, berkuasa dan lebih mudah digunakan.
Atas ialah kandungan terperinci Apakah perubahan yang dibawa oleh versi terkini rangka kerja golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!