Selepas pengalaman luar biasa yang saya alami dengan orang-orang dari Mattermost semasa Hacktoberfest (jangan lupa juga hadiah mereka!), saya memutuskan untuk pergi bersama mereka sekali lagi pada bulan November.
Secara literal "pergi" dengan mereka kali ini, memandangkan pelayan mereka ditulis dalam Go (saya minta maaf atas rasa humor saya yang menyakitkan hati). Semasa Hacktoberfest, saya bekerja pada aplikasi mudah alih mereka, yang ditulis dalam TypeScript menggunakan React Native. Walau bagaimanapun, isu yang saya dapat kali ini adalah berkaitan dengan pelayan mereka dan ini adalah kali pertama saya mengusahakan projek Go.
Tanpa pengetahuan awal tentang Go, saya membuat keputusan yang tepat untuk mempelajarinya terlebih dahulu. Nasib baik, Go sangat mudah untuk mendapatkannya. Saya benar-benar kagum dengan kesederhanaannya sambil dapat menghasilkan perisian yang pantas dan boleh dipercayai. Video selama satu jam adalah satu-satunya yang saya perlukan untuk memahami asas-asasnya, dan saya mendapati diri saya berhenti sebentar berbanding semasa saya belajar Rust ?.
Pertama sekali saya ingin meluangkan sedikit masa untuk menghargai gopher yang sangat bodoh ini:
Dengan itu, saya suka bahawa Go ditaip secara statik dan kuat. Ini adalah sesuatu yang saya bincangkan dengan rakan baru-baru ini: Bahasa statik dan/atau taip kuat hanya memerlukan sedikit pemikiran lagi ke dalam reka bentuk kod anda, tetapi ia boleh menghapuskan sejumlah besar kekaburan. Selain itu, sama seperti Rust, pengkompil Go boleh membuat kesimpulan jenis jika boleh, yang menjadikan pemikiran tambahan lebih remeh.
Sesetengah orang memanggil Go sebagai "C moden". Sekarang saya faham mengapa: Ia berfungsi dengan sangat baik dan mempunyai kesederhanaan C. Ia menyokong operasi peringkat rendah menggunakan penunjuk. Tetapi tidak seperti C, ia datang dengan ciri yang anda harapkan daripada bahasa moden, seperti antara muka, kepingan, peta, dsb. Satu lagi ciri yang menarik ialah goroutine, yang merupakan model mudah unik untuk mengendalikan pelaksanaan selari.
Ternyata saya benar-benar keluar dan keterlaluan dengan pembelajaran Go kerana ini adalah isu yang sangat mudah. Apa yang saya perlu lakukan ialah melaksanakan pengendalian ralat dalam satu fail.
Dalam isu ini, mereka mempunyai bahagian yang mudah disebut bahawa mereka lebih suka ralat sama ada dikembalikan atau dilog. Mengetahui dokumen pembangun Mattermost dengan baik, saya segera menemui bahagian tentang pengendalian ralat.
Satu-satunya halangan yang saya hadapi ialah menentukan tahap log yang hendak digunakan. Walaupun ia disebut dalam dokumen, saya masih mendapati definisi itu samar-samar. Walau bagaimanapun, selepas carian pantas dalam projek, saya menyedari bahawa fungsi ini sentiasa menggunakan tahap log yang sama di tempat lain. Ini menghilangkan keraguan saya.
Memandangkan fungsi yang saya kerjakan menyajikan halaman HTML statik, saya juga memastikan kod ralat HTTP yang betul dikembalikan apabila ralat berlaku seperti itu:
http.Error(w, err.Error(), http.StatusInternalServerError)
Itu sahaja kerja! Saya memfailkan PR dan pada mulanya agak bimbang, kerana ini adalah kali pertama saya bekerja dengan Go, tetapi ternyata ia baik-baik saja. PR telah digabungkan hanya selepas pembaikan kecil.
Secara keseluruhan, ini adalah isu yang menyeronokkan dan mudah untuk diselesaikan. Saya gembira kerana saya memilihnya walaupun ia tidak begitu mencabar seperti beberapa isu lain yang telah saya usahakan. Saya sentiasa gembira untuk mempelajari bahasa baharu dan ini adalah alasan yang tepat untuk itu! Dan ia agak hebat kerana dapat menggunakannya dengan segera.
Atas ialah kandungan terperinci Pergi dengan Mattermost!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!