Go Hakkında Genel Bilgi
Go’nun 28 Mart 2012’de versiyon 1.0’ı yayınlanmıştır ancak bundan önce 2009 yılında production ortamında kullanılmaya başlanmıştır.
Ken Thompson, Rob Pike ve Robert Griesiemer tarafından Google çatısı altında geliştirilmiştir.
Unix işletim sistemi, C programlama dili ve UTF 8’i tasarlayan kişilerdir.
Tamamen açık kaynaktır. Go
Linux, Mac OS X, FreeBSD, NetBSD, OpenBSD ve Windows ortamlarında çalıştırılabilir.
Kod:
package main
import "fmt"
func main() {
fmt.Println("Merhaba")
}
Nesne Tabanlı veya Fonksiyonel Programlama
PHP
PHP nesne tabanlı bir dil olup Class’lar ile kalıtım vardır.
Kod:
setMarka($marka);
$this->setPlaka($plaka);
}
public function arabaBilgileriniGoster() {
echo 'Araba Markası:'.$this->marka."
Araba Plakası:".$this->plaka;
}
private function setMarka($marka) {
$this->marka = $marka;
}
private function setPlaka($plaka) {
$this->plaka = $plaka;
}
}
$araba1 = new Araba("Mercedes","06 THT 06");
$araba1->arabaBilgileriniGoster();
echo "
";
$araba2 = new Araba("Porche","42 THT 42");
$araba2->arabaBilgileriniGoster();
?>
Go
Go’da nesne tabanlı değil, fonksiyonel programlama kültürü vardır. Class ve kalıtımdan ziyade, Struct ve Interface vardır.
Kod:
package main
import (
"fmt"
)
type Araba struct {
marka string
plaka string
}
func ArabaBilgileri(araba Araba) (string, string) {
return araba.marka, araba.plaka
}
func (araba *Araba) setMarka(yeniMarka string) {
araba.marka = yeniMarka
}
func (araba *Araba) setPlaka(yeniPlaka string) {
araba.plaka = yeniPlaka
}
func main() {
metcedesAraba := Araba{
marka: "Mercedes",
plaka: "06 THT 06",
}
porcheAraba := Araba{
marka: "Porche",
plaka: "42 THT 42",
}
model, plaka := ArabaBilgileri(mercedesAraba)
fmt.Printf("%s %s \n", model, plaka)
porcheAraba.setPlaka("42 THT 042")
porcheAraba.setMarka("Turkiye")
model, plaka = ArabaBilgileri(porcheAraba)
fmt.Printf("%s %s \n", model, plaka)
Paket Yönetimi, Kod Yapısı, Framework
PHP
PHP’nin bünyesinde hazır bir paket yöneticisi yoktur, Composer kullanılır.
Kodlar paternlere uygun olarak yazılabildiği gibi, onlarca HTML dosyasının içine serpiştirilebilir.
Büyük projeler için MVC mantığı ile çalışan Framework’ler (Laravel, Symfony, WordPress) tercih edilir veya ek paketlerle sıfırdan Framework yazılır.
Routing, template gibi önemli özellikler ancak ek paketlerle kazandırılır.
Go
Go’nun kendi paket yöneticisi vardır ve kullanılmak istenen paketler “go get …” komutu ile kolaylıkla kurulabilir. Go Modules ile de tüm bağımlılıklar rahatlıkla yönetilebilir.
Düzensiz kod yazmaya müsade etmez. Özellikle fmt paketi kodun otomatik olarak uygun şeklde dönüştürülmesini sağlar.
Boşluk (Space) yerine Tab kullanılır.
Kendi routing özelliği (net/http) ve template sistemi vardır.
Routing ve template sistemi sayesinde herhangi bir framework kullanmadan da oldukça sağlam ve stabil projeler üretilebilir.
Son düzenleme: