PHP geliştiricileri için Go Gir
Go tartışmak için büyük bir konu, o zaman girelim! Bu gidiyor mu ve neden bu havalı? Go’ya aşina değilseniz (GoLang olarak da adlandırılır), 2009 yılında Google’da birkaç kişi tarafından oluşturulan bir programlama dilidir. Birçok büyük şirket ve hane, yazılımlarının bir kısmını gitmek için değiştirir. Shopify, Go kullanarak yaptıkları bir veritabanı taşıma cihazına sahip, basecamp yavaş yavaş Ruby’den Go’ya geçti ve Twitter bile 2015 yılında “Cevap” analitik platformu ile Go trenine girmişti. Olasılık, son zamanlarda büyük şirketlerin çoğunu Kap altında görürseniz, biraz gideceksiniz.
Go statik, derlenmiş ve dürüst, öğrenmesi oldukça kolay yazılmıştır. Bu, çeşitli alanlarda PHP gibi değil, Ruby veya Python kadar minimum değil. Aşağıdaki örnekte, Go’nun kodun çalıştırıldığı bir paket, içe aktarma ve bir oynatma işlevi () kullandığını göreceksiniz: Paket Ana İçe Aktar “FMT” Func Main () {fmt.println (“Hey Y’LL” )} Kod Go ana paketten başlar ve C gibi ana işlev () ‘de başlar. Oynamayan paketlere paylaşılan kütüphaneler denir ve yapıldıktan ve kurulduktan sonra içe aktarılabilir. Git yapan şey, bir web sunucusu ve varsayılan yönlendirici içermesi, yürütülebilir bir şekilde derlendiği ve kutunun dışında eşzamanlılık içerdiği için uygulamayı çok basit hale getirmesidir. Git. Ayrıca, bir programcı olarak becerilerimizi geliştirmek için çeşitli şeyler öğrenmek her zaman iyidir. Öyleyse go ile _go_ing alacağına bakalım …
Hiçbir şey yapmadan başlayarak, çalışma zamanı gitmeye ve tüm bagajlara ihtiyacımız var. GO belgelerindeki “Başlangıç” sayfasında nasıl yapılacağını okuyabilirsiniz. Bittiğinde, Go sürümünü çalıştırın veya seçtiğiniz terminalde GO YARDIM. Başarılı olursa, ikili Go $ yolunuza eklendi ve yarışa gideceksiniz. $ Gopath Go ile çalışmaya başladığımda doğru yapmadığım bir şey, Go Works ‘çalışma alanımı doğru bir şekilde yönetmekti. $ Gopath ortam değişkeninin doğru şekilde düzenlendiğinden emin olmalısınız, çünkü bu bir Go dosyasıyla çalışmak için temel bir çalışma alanıdır. $ Home dosyasına aşağıdakiler gibi bir şey ekleyin. *Nix sistemi için profil işlevleri: GOPATH = $ {Home}/GO, $ Gopath klasörünüzde SRC, PKG ve BIN klasörünü oluşturduğunuzdan emin olmalısınız. . Bu klasörün burada nasıl ve neden bulunması gerektiği hakkında daha fazla bilgi. Genellikle $ gopath/src/github.com/user/package_name adresinden yeni bir paket (mandiri uygulaması) oluşturacaksınız. Dokümantasyon, belgelenme her yerde olduğunu öğrenirken beni şaşırtan şeylerden biri. Resmi belgeleri takip etmek oldukça zordur ve Go’da gerçekten programlanmanın temel yönlerini gerçekten açıklamaz. GO Kodu nasıl yazmak istediğinizi açıklamada daha iyi olan başka kaynaklar buldum.
Küçük Git Kitap
Rolle bir web uygulaması oluşturmak
Wiki Github’a Git
Wiki’den Sunucu Programlama Bölümü
Bir örnekle git
Google, aradığınız hemen hemen tüm cevaplara sahip olacak, bilirsiniz, çünkü Google’ın Skynet’i oluşturur. Sadece karşılaştığınızı görmek için en azından bir GO turuna bir bakış önereceğim.
Bu, Go kodunu etkileşimli olarak düzenlemenin ve çalıştırmanın bir yolu olan Go Playground’u içerir. Bu, hemen konuşacağımız dilimler ve işaretçiler gibi şeyleri test etmek için yararlıdır! GO çok büyük bir konu olduğundan, bu yazıyı PHP ve/veya JavaScript’in temel farklılıklarını öğrenmeye odaklanacağız ve gelecekteki yayınlarla daha derine inecek. Bu yazıda şunları tartışacağız: Değişkenler ve GO Türü Sistemleri
Dizi
Dilim
harita
döngü
İşlev
Yapı
GO Kodu yazma fikirleri veya editörler neredeyse tüm metin editörlerinde yapılabilir. VS kodu oldukça iyidir (WordPress’in geliştirilmesi için ana editör olarak Visual Studio kodu ve Xdebug ayarları hakkında bir rehber yazıyoruz). Gerçekten Sözdizimi hatasını otomatik olarak vurgulayacak ve temel işlevi ‘tıklamanıza’ izin vereceği için JetBrains’den bir Goland kullanmanın gerçekten olağanüstü olduğunu buldum. Goland ayrıca içe aktarılmamış işlevleri kullanırsanız paketi otomatik olarak içe aktarır.
Değişkenler doğrudan PHP veya JavaScript’ten gelir, dikkat edeceğiniz en büyük şeylerden biri Go Tür sistemidir. GO statik olarak yazılır, bu nedenle bildirildiğinde değişken türü verilmelidir. Bu aynı zamanda PHP ile karşılaştırıldığında, yanlış değeri ile değişkenleri yeniden kuramayacağınız anlamına gelir. Örneğin, bu gerçekten geçerli bir PHP kodudur: // php $ eski = true; $ Age = null; if ($ eski) {$ Age = 36; // go in int} olarak döküm, çok fazla değil: // eski: = true var yaş bool eski ise {yaş = 36} // derleyici hatası: atama sisteminde tip bool olarak 36 (type int) kullanılamıyor GO türü PHP’den çok daha sıkı ve konjenital dönüşüm fonksiyonu ile bile BOOL’u INT’ye dönüştüremezsiniz. Bu, değişken beyanınızı ve kodunuzla ne yapmaya çalıştığınızı düşünmeye zorlar. Yukarıdaki GO örneğini denemek istiyorsanız, yukarıdaki kodu .go dosyasına kopyalayabilir ve çalıştırabilirsiniz MyFile.go veya çalıştırabilirsiniz. Playground yeni gitmek için koy ve ‘Run’ tuşuna basın. Dikkat ediyor musunuz: =? ‘Kısa ödev’ operatörü olarak adlandırılır. Bir işlevde, bu eşdeğerdir: var eski bool eski = true // veya .. var eski = true // çıkarılmış tür // veya … eski: = true derleyicisi, değişken türünü bulmak için yeterince akıllı gidin. ! GO, Int, String, Float (Float32, Float64) vb. Gibi tüm sıradan türleri destekler. Ancak dizi, dilim, haritalar ve kanallar gibi kompozit türleri de destekler. GO türü sistemi çok karmaşıktır ve işaretçiler, yapı (Go nesne modelinin çekirdeği olarak hareket eden ve geliştiricilerin kendi türlerini oluşturma yeteneği sağlar) ve arayüzler dahil C ++ ‘a benzer.
Dizi Benim gibiyseniz, değişkenin değerini kaydetmek ve değişkeni kaçınılmaz olarak yaparak işinizi yürütmek için gerçekten bir bilgisayar belleği kullandığını unutabilirsiniz.Welp, git yüzünü tokatlamak için burada.Görüyorsunuz, Go’da belleğin nasıl kullanıldığını bilmeniz gerekir.Bu, Array on Go ile çalışmaya başladığınızda netleşir.Örneğin PHP’de, bir köpek listeniz varsa, şöyle bir çizgi yapabilirsiniz: $ Mah_Dogs = [‘Snoopy’, ‘Skinny’, ‘Scooby’, ‘Santos L. Halper’];Harika, bu yüzden aynı şeyi hareket ettireceğiz, değil mi?
MAH_DOGS: = [4] String {“Snoopy”, “Skinny”, “Scooby”, “Santos L. Halper”,} çok benzer görünüyor, ama ya [4] Dize? Bu, arkadaş, sabit bir dizi ölçüsüdür. Go’da, C gibi, Array’ın sabit bir boyutu vardır. Diziye başka bir öğe eklemek ister misiniz? Biraz daha büyük yeni bir dizi kopyalamak ve yapmak daha iyi! 😬. Bunun neden ve nasıl çalıştığı hakkında daha fazla bilgi edinebilirsiniz, ancak temel olarak dizi sıralı bellek parçaları kullanır, böylece bir dizinle erişilebilir. Bu, diziye erişilmesini çok hızlı hale getirir, ancak güncellenmesi yavaştır. GO’da daha yaygın olarak kullanılan veri türü, dinamik bir PHP dizisi gibi Dilimdir. Dilimler Önceki örneğe dayanarak, dizi yerine dilimler yapalım: Mah_dogs: = [] String {“snoopy”, “skinny”, “Scooby”, “Santos L. Halper”,} Fark’a dikkat ediyor musunuz? Bu temel olarak aynıdır, ancak dirsek parantezlerinde sabit bir miktar yoktur. Hah? Go’daki Dilim, dizinin üstünde bir katmandır, altta yatan diziye referansları vardır, ancak aslında herhangi bir veri içermez. Yalnızca temel dizideki verilere atıfta bulunurlar. Dilimlerin bir uzunluğu (kaç öğe içerdikleri) ve kapasiteye (kaç öğe barındırabilecekleri) sahiptir. Dilimler ayrıca daha fazla öğe eklerseniz boyutu otomatik olarak değiştirir! PHP dizisinde olduğu gibi dizinlerden sonra dilimlerdeki öğelere erişebilirsiniz: fmt.println (MAH_DOGS [0]) // Snoopy MAH_DOGS [0] = “Frank” fmt.println (MAH_DOGS [0]) // frank tıpkı PHP dizisiyle array_slice () gibi, yeni dilimler yapmak için dilimleri kırabilirsiniz! Dilimler bir alt küme öğesi almak için sözdizimi dilimini [yüksek: düşük] kullanır. New_dogs: = MAH_DOGS [2:] fmt.println (new_dogs) // Scooby, Santos L. Halper, örneğin tüm öğeleri dilimlerin sonuna kadar isterseniz yüksek veya düşük sınırları hariç tutabilirsiniz. New_dogs: = MAH_DOGS [2:] // new_dogs ile aynıdır: = MAH_DOGS [2: 4] Son olarak, PHP’de olabildiğince dilimlere öğe ekleyemezsiniz. PHP’de sadece diziye başka öğeler eklemek için Sözdizimini [] kullanmanız gerekir. Go’da append () işlevini kullanmalısınız. // Php $ MAH_DOGS [] = ‘Dewey’; $ MAH_DOGS [] = ‘Steve’; // go mah_dogs = append (Mah_dogs, “Dewey”, “Steve”) ilişkisel Array = Tamam haritası, böylece dilimler serin ve hepsi, ancak anahtarın (dizin) sadece bir tamsayı olduğunu fark etmiş olabilirsiniz. Bir dizeyi, ilişkilendirici PHP dizisinde olduğu gibi kullanabilir misiniz? Hayır, hayır, yapamazsın. Go, harita adı verilen bir yapı kullanır. Oldukça fazla ilişkilendirici diziler, ama gidin. // php $ bakkaliye = [‘ekmek’ => 1.99, ‘süt’ => 2.99, ‘yumurta’ => 4.99,]; // GOOD GROMERIES: = MAP [STRING] Float32 {“Ekmek”: 1.99, “Süt”: 2.99, “Yumurtalar”: 4.99,} Sözdizimi Yukarıdaki gibi, harita [anahtar türü] değer türüdür. Harita öğelerine erişmek beklediğiniz gibidir, PriceOffbread: = bakkaliye [“ekmek”], PHP’nin uygulanması gibi. PHP Associational Dizi gibi ve GO dilimlerinin aksine, haritalar yalnızca yeni bir anahtar değer çifti ekleyerek eklenebilir: yiyecekler [”
Meyve “] = 5.99 Döngü Şimdi çeşitli GO koleksiyonları gördük, ancak bu yapıyı nasıl tekrarlıyorsunuz? Eski PHP ve JavaScript destekçileri, Loop Foreach kullanıyor muyuz? Doğru değil. Go sadece bir tür döngü var, döngü var. Neyse ki bu çok esnektir ve foreach gibi veya döngüler gibi kullanılabilir. Döngü için Basic PHP sürümüyle neredeyse aynı görünüyor: toplam: = 0; i <10; i ++ {sum+= i} Bir döngü while: SUM 5, ‘köpekler’ => [‘snoopy’, ‘skinny’, ‘Scooby’, ‘Santos L. Halper’]] $ Dogs;} Extract (getDogs ()); // Go Function getDogs () (Count Int, Dogs [] String) {Count = 5 köpek = [] String { “Snoopy”, “Skinny”, “Scooby”, “Santos L. Halper”
,} Return} sayısı, köpekler = getDogs () Argüman listesinden sonra dönüş türünü belirleyebileceğinizi göreceksiniz. Bu, PHP 7 dönüşünün türüne biraz benzer, ancak Go, birkaç değeri iade etmenin yanı sıra dönüşün adını verdi. Adlandırılan isim, her iki değeri de manuel olarak geri yüklemenize gerek olmadığı anlamına gelir. Yukarıdaki örnekte Go, dönüş ifadesine ulaşıldığında (Kont Int, Dogs [] String) adlı sonucu kullanır. Biraz sözdizimsel değişiklik, ama okumayı daha kolay hissediyorum. GO ayrıca, ihtiyacınız yoksa döndürülen değeri atmanızı sağlayan boş bir kimlik (_) içerir. Köpeğimiz örneğinde, hesaplamayı umursamıyorsak, bunu değerden kurtulmak için kullanacağız: _, köpekler = getDogs () Kısaca tartışacağımız son şeyin yapısı bir yapıdır. Yapı karmaşık bir tiptir ve Go’nun nesneleri ve kompozisyonları nasıl ele aldığının temelini oluşturur. Bunu başka bir zamanda daha derinden tartışacağız, ancak şimdilik şimdilik neyin yararlı olduğunu bilmek. PHP’de geleneksel OOP sınıfları ve modellerimiz var – birçok yöntem ve özellik içeren sınıflar yapıyoruz. Go’da benzer bir yapı bir yapıdır. Yapı temelde sadece diğer tiplerden oluşan bir gruptur. Ana İthalat Paketi (“FMT” Dizeleri “) Tip Köpek Yapısı {Name String Age Int Sever [] String} Func Main () {Goodboy: = Dog {” Skinny “, 4, [] String {” Food “,” Uyku “}} fmt.printf (” Bu %s. Yaş %D’dir ve %s olan en sevdiği şeyler “, goodboy.name, goodboy.age, strings.jin (goodboy.les,”, “)} / / Çıktı: Bu sıska. Yaş 4 ve o ‘