Golang ialah bahasa pengaturcaraan yang direka bentuk dengan keselarasan yang cekap dan kependaman rendah sebagai matlamat reka bentuknya. Oleh kerana kelajuan kompilasi yang pantas, pengurusan memori yang ringkas dan sintaks yang ringkas, ia digemari oleh semakin ramai pengaturcara. Dari segi platform merentas, Golang juga mempunyai kelebihan unik Artikel ini akan memperkenalkan cara Golang mencapai platform merentas.
1. Kelebihan merentas platform Golang
Golang mempunyai ciri merentas platform pada peringkat bahasa. Ia menggunakan kompilasi statik untuk menyusun kod sumber ke dalam fail binari boleh laku asli, jadi ia boleh dijalankan dalam mana-mana sistem pengendalian yang menyokong masa jalan Golang. Golang juga mempunyai mekanisme pengumpulan sampah terbina dalam yang menguruskan memori dengan baik, yang sangat berguna untuk pembangunan aplikasi merentas platform.
Golang mempunyai perpustakaan standard yang sangat kaya, termasuk pelbagai struktur data, rangkaian, penyulitan, sistem pengendalian, imej, audio, dsb. Modul yang biasa digunakan , perpustakaan standard ini boleh dikongsi pada sistem pengendalian yang berbeza, dan pembangun tidak perlu melakukan konfigurasi dan pembungkusan tambahan.
Kompilasi dan pembungkusan kod bahasa Go boleh dilengkapkan menggunakan alat baris arahan alat go. go build boleh menjana fail binari boleh laku tempatan, dan go install akan meletakkan fail binari yang disusun di bawah $GOPATH/bin. Pembangun hanya perlu memasang alat kompilasi yang sepadan di bawah sistem pengendalian yang berbeza untuk membina dan membungkus aplikasi pada sistem pengendalian yang berbeza.
2. Kaedah pelaksanaan merentas platform
Apabila menulis kod merentas platform, anda perlu mempertimbangkan pemilihan bergantung perpustakaan. Golang mempunyai alat pengurusan pergantungan yang baik, dan anda boleh mengurus pakej pergantungan melalui arahan mod go. Apabila memilih perpustakaan bergantung, anda perlu memilih perpustakaan sumber terbuka merentas platform sebanyak mungkin untuk memastikan ia boleh dijalankan pada berbilang sistem pengendalian.
Menggunakan kompilasi bersyarat boleh membuat proses kod secara berbeza mengikut platform yang berbeza. Golang menyediakan arahan kompilasi bersyarat terbina dalam yang boleh digunakan dalam kod. Contohnya:
// +build windows package main import ( "fmt" ) func main() { fmt.Println("Welcome to Windows") }
Dalam kod di atas, jika anda menggunakan arahan +build windows
, kod ini hanya akan disusun di bawah platform Windows.
Dalam pembangunan merentas platform, kita selalunya perlu menangani isu yang berkaitan dengan sistem pengendalian. Golang menyediakan pakej os, yang boleh mengakses fungsi peringkat sistem pengendalian, seperti fail, proses, pembolehubah persekitaran, dsb. Sebagai contoh, kita boleh menggunakan fungsi os.Getenv untuk mendapatkan pembolehubah persekitaran tanpa mengambil kira sama ada sistem pengendalian semasa ialah Windows atau Linux. Contoh kod:
package main import ( "fmt" "os" ) func main() { fmt.Println("My home directory:", os.Getenv("HOME")) }
Di bawah sistem pengendalian yang berbeza, format laluan fail adalah berbeza. Golang menyediakan pakej laluan fail, yang boleh mengendalikan laluan fail dengan betul di bawah sistem pengendalian yang berbeza. Contohnya:
package main import ( "fmt" "path/filepath" ) func main() { path := "/path/to/file" fmt.Println(filepath.Dir(path)) // 输出 /path/to fmt.Println(filepath.Base(path)) // 输出 file }
Di bawah Windows, laluan yang sama diwakili sebagai path oile
dan pakej laluan fail boleh digunakan untuk mengendalikan laluan fail dengan betul di bawah sistem pengendalian yang berbeza.
Dalam sesetengah kes, adalah perlu untuk menggunakan kod yang berbeza untuk sistem pengendalian yang berbeza. Sebagai contoh, di bawah Windows anda mungkin perlu menggunakan API Windows, manakala di bawah Linux anda perlu menggunakan panggilan sistem Linux. Untuk menyelesaikan masalah ini, Golang menyediakan teg binaan, yang boleh disusun secara berbeza mengikut sistem pengendalian yang berbeza. Contohnya:
// +build windows package main import "fmt" func main() { fmt.Println("Hello,Windows") }
Kod di atas menggunakan teg binaan untuk mengehadkan kod ini kepada hanya dikompil pada Windows.
3. Kes Pelaksanaan
Seterusnya, kami akan menunjukkan cara Golang boleh mencapai platform merentas di bawah platform yang berbeza dengan melaksanakan pelayan fail statik HTTP yang mudah. Ia boleh dibahagikan kepada langkah berikut:
Kami mula-mula melaksanakan pelayan HTTP yang mudah, kodnya adalah seperti berikut:
package main import ( "fmt" "net/http" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { http.ServeFile(w, r, r.URL.Path[1:]) }) fmt.Println("Server started.") http.ListenAndServe(":8080", nil) }
Program Ia akan mendengar port 8080, dan apabila terdapat permintaan, ia akan menggunakan fungsi http.ServeFile untuk menghantar fail yang diminta kepada klien. Harap maklum bahawa tiada peraturan penghalaan dikonfigurasikan di sini Ia akan menganggap nama fail yang diminta sebagai alamat penghalaan, jadi localhost:8080/index.html
boleh diakses secara langsung.
Seterusnya, kami perlu menyokong sistem pengendalian yang berbeza oleh pelayan HTTP. Kita boleh mencapai ini dengan mengehadkan teg kompilasi:
// +build windows package main import ( "fmt" "net/http" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { http.ServeFile(w, r, r.URL.Path[1:]) }) fmt.Println("Server started.") http.ListenAndServe(":8080", nil) }
Simpan kod di atas sebagai main_windows.go
, yang boleh disusun dan digunakan di bawah Windows.
Begitu juga, kami boleh mencipta main_linux.go
, main_darwin.go
dan fail lain serta menggunakan teg binaan yang sepadan untuk menulis kod yang sesuai untuk sistem pengendalian yang berbeza.
Melalui kaedah di atas, kita boleh mencapai pembangunan merentas platform Golang. Ciri kompilasi statik Golang, perpustakaan standard yang kaya, kompilasi bersyarat terbina dalam dan alatan merentas platform menjadikan pembangunan merentas platform sangat mudah dan cekap.
Atas ialah kandungan terperinci golang mencapai cross-platform. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!