{"id":36943,"date":"2025-12-25T08:30:42","date_gmt":"2025-12-25T05:30:42","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/go-golang-ile-baslangic-gelistiriciler-icin-pratik-bir-rehber\/"},"modified":"2025-12-25T08:30:42","modified_gmt":"2025-12-25T05:30:42","slug":"go-golang-ile-baslangic-gelistiriciler-icin-pratik-bir-rehber","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/go-golang-ile-baslangic-gelistiriciler-icin-pratik-bir-rehber\/","title":{"rendered":"Go (Golang) ile Ba\u015flang\u0131\u00e7: Geli\u015ftiriciler \u0130\u00e7in Pratik Bir Rehber"},"content":{"rendered":"<h2>Go (Golang) ile Ba\u015flang\u0131\u00e7: Geli\u015ftiriciler \u0130\u00e7in Pratik Bir Rehber<\/h2>\n<p>Go, ya da yayg\u0131n bilinen ad\u0131yla Golang, Google taraf\u0131ndan geli\u015ftirilen, a\u00e7\u0131k kaynakl\u0131 ve statik olarak tiplendirilmi\u015f bir programlama dilidir. Y\u00fcksek performans, e\u015fzamanl\u0131l\u0131k deste\u011fi ve basit s\u00f6zdizimi sayesinde modern yaz\u0131l\u0131m geli\u015ftirme d\u00fcnyas\u0131nda h\u0131zla pop\u00fclerlik kazanm\u0131\u015ft\u0131r. \u00d6zellikle mikroservisler, a\u011f programlama, bulut tabanl\u0131 uygulamalar ve komut sat\u0131r\u0131 ara\u00e7lar\u0131 geli\u015ftirmek isteyenler i\u00e7in ideal bir se\u00e7imdir. Bu rehber, Go d\u00fcnyas\u0131na ad\u0131m atmak isteyen geli\u015ftiricilere temel bilgileri sunarak, kurulumdan ileri seviye konulara kadar pratik bir yol haritas\u0131 \u00e7izmeyi hedeflemektedir. Go&#8217;nun g\u00fcc\u00fcn\u00fc ke\u015ffetmeye haz\u0131r m\u0131s\u0131n\u0131z?<\/p>\n<h2>1. Go Neden Bu Kadar Pop\u00fcler?<\/h2>\n<p>Go, geli\u015ftiricilere sundu\u011fu benzersiz avantajlar sayesinde k\u0131sa s\u00fcrede b\u00fcy\u00fck bir topluluk edinmi\u015f ve bir\u00e7ok b\u00fcy\u00fck teknoloji \u015firketi taraf\u0131ndan benimsenmi\u015ftir. Bu pop\u00fclerli\u011fin arkas\u0131nda yatan temel nedenleri inceleyelim.<\/p>\n<h3>Performans ve H\u0131z<\/h3>\n<p>Go, derlenmi\u015f bir dil olmas\u0131 nedeniyle C\/C++ gibi dillere yak\u0131n bir performans sunar. D\u00fc\u015f\u00fck seviyeli bellek y\u00f6netimi ve h\u0131zl\u0131 derleme s\u00fcreleri, Go uygulamalar\u0131n\u0131n \u00e7ok daha verimli \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flar. \u00d6zellikle y\u00fcksek trafikli sunucular ve performans kritik uygulamalar i\u00e7in Go, m\u00fckemmel bir tercihtir. Derleme s\u00fcresinin k\u0131sal\u0131\u011f\u0131, geli\u015ftirme d\u00f6ng\u00fcs\u00fcn\u00fc de h\u0131zland\u0131r\u0131r.<\/p>\n<h3>E\u015fzamanl\u0131l\u0131k (Concurrency)<\/h3>\n<p>Go&#8217;nun en g\u00fc\u00e7l\u00fc \u00f6zelliklerinden biri, dilin \u00e7ekirde\u011fine entegre edilmi\u015f e\u015fzamanl\u0131l\u0131k modelidir. &#8220;Goroutine&#8221; ad\u0131 verilen hafif i\u015f par\u00e7ac\u0131klar\u0131 ve &#8220;kanal&#8221; ad\u0131 verilen ileti\u015fim mekanizmalar\u0131 sayesinde, karma\u015f\u0131k e\u015fzamanl\u0131 uygulamalar \u00e7ok daha kolay ve g\u00fcvenli bir \u015fekilde yaz\u0131labilir. Bu, \u00e7ok \u00e7ekirdekli i\u015flemcilerin g\u00fcc\u00fcn\u00fc tam anlam\u0131yla kullanabilen, \u00f6l\u00e7eklenebilir sistemler geli\u015ftirmek i\u00e7in kritik bir avantajd\u0131r.<\/p>\n<h3>Basitlik ve Okunabilirlik<\/h3>\n<p>Go&#8217;nun s\u00f6zdizimi olduk\u00e7a sade ve anla\u015f\u0131l\u0131rd\u0131r. Karma\u015f\u0131k \u00f6zelliklerden ka\u00e7\u0131n\u0131lmas\u0131, dilin \u00f6\u011frenme e\u011frisini k\u0131salt\u0131r ve kodun okunabilirli\u011fini art\u0131r\u0131r. Bu basitlik, \u00f6zellikle b\u00fcy\u00fck ekiplerde kodun tutarl\u0131l\u0131\u011f\u0131n\u0131 sa\u011flamaya ve yeni geli\u015ftiricilerin projeye h\u0131zla adapte olmas\u0131na yard\u0131mc\u0131 olur. Go&#8217;nun kat\u0131 formatlama kurallar\u0131 (<code>go fmt<\/code> arac\u0131 ile otomatikle\u015ftirilir) da kodun her zaman d\u00fczenli olmas\u0131n\u0131 garanti eder.<\/p>\n<h3>Geni\u015f K\u00fct\u00fcphane Deste\u011fi<\/h3>\n<p>Go, standart k\u00fct\u00fcphanesiyle a\u011f, kriptografi, veri yap\u0131lar\u0131 ve I\/O i\u015flemleri gibi bir\u00e7ok temel ihtiyac\u0131 kar\u015f\u0131lar. Bunun yan\u0131 s\u0131ra, geni\u015f ve aktif bir a\u00e7\u0131k kaynak toplulu\u011fu sayesinde s\u00fcrekli b\u00fcy\u00fcyen \u00fc\u00e7\u00fcnc\u00fc taraf k\u00fct\u00fcphane ekosistemine sahiptir. Web \u00e7er\u00e7evelerinden veritaban\u0131 s\u00fcr\u00fcc\u00fclerine, mesaj kuyruklar\u0131ndan makine \u00f6\u011frenimi ara\u00e7lar\u0131na kadar bir\u00e7ok alanda zengin k\u00fct\u00fcphane se\u00e7enekleri mevcuttur.<\/p>\n<h2>2. Go Geli\u015ftirme Ortam\u0131n\u0131n Kurulumu<\/h2>\n<p>Go ile kod yazmaya ba\u015flamadan \u00f6nce, geli\u015ftirme ortam\u0131n\u0131z\u0131 kurman\u0131z gerekmektedir. Bu b\u00f6l\u00fcm, Go&#8217;nun nas\u0131l indirilece\u011fi, kurulaca\u011f\u0131 ve ortam de\u011fi\u015fkenlerinin nas\u0131l ayarlanaca\u011f\u0131 konusunda ad\u0131m ad\u0131m rehberlik edecektir.<\/p>\n<h3>Go \u0130ndirme ve Y\u00fckleme<\/h3>\n<p>Go&#8217;nun resmi web sitesi olan <a href=\"https:\/\/go.dev\/dl\/\">go.dev\/dl<\/a> adresinden i\u015fletim sisteminize (Windows, macOS, Linux) uygun kurulum paketini indirebilirsiniz. \u0130ndirme i\u015flemi tamamland\u0131ktan sonra, i\u015fletim sisteminize \u00f6zel ad\u0131mlar\u0131 takip ederek kurulumu ger\u00e7ekle\u015ftirin:<\/p>\n<ul>\n<li><strong>Windows:<\/strong> \u0130ndirilen <code>.msi<\/code> dosyas\u0131n\u0131 \u00e7al\u0131\u015ft\u0131r\u0131n ve kurulum sihirbaz\u0131n\u0131 takip edin.<\/li>\n<li><strong>macOS:<\/strong> \u0130ndirilen <code>.pkg<\/code> dosyas\u0131n\u0131 \u00e7al\u0131\u015ft\u0131r\u0131n ve ad\u0131mlar\u0131 izleyin.<\/li>\n<li><strong>Linux:<\/strong> \u0130ndirilen <code>.tar.gz<\/code> dosyas\u0131n\u0131 genellikle <code>\/usr\/local<\/code> dizinine a\u00e7man\u0131z ve ard\u0131ndan PATH de\u011fi\u015fkenini ayarlaman\u0131z gerekir. \u00d6rne\u011fin:\n<pre><code>sudo rm -rf \/usr\/local\/go\nsudo tar -C \/usr\/local -xzf go1.22.1.linux-amd64.tar.gz<\/pre>\n<p><\/code>\n    <\/li>\n<\/ul>\n<h3>Ortam De\u011fi\u015fkenlerinin Ayarlanmas\u0131<\/h3>\n<p>Kurulumdan sonra, Go komutlar\u0131n\u0131n her yerden \u00e7al\u0131\u015fabilmesi i\u00e7in <code>PATH<\/code> ortam de\u011fi\u015fkeninin ayarlanmas\u0131 gerekebilir. \u00c7o\u011fu otomatik y\u00fckleyici bunu sizin i\u00e7in yapar, ancak Linux veya manuel kurulumlarda kontrol etmek \u00f6nemlidir.<\/p>\n<ul>\n<li><strong>Linux\/macOS:<\/strong> <code>~\/.bashrc<\/code>, <code>~\/.zshrc<\/code> veya <code>~\/.profile<\/code> dosyan\u0131za a\u015fa\u011f\u0131daki sat\u0131r\u0131 ekleyin:\n<pre><code>export PATH=$PATH:\/usr\/local\/go\/bin<\/pre>\n<p><\/code><br \/>\n        Ard\u0131ndan terminalinizi yeniden ba\u015flat\u0131n veya <code>source ~\/.bashrc<\/code> (veya kulland\u0131\u011f\u0131n\u0131z dosya) komutunu \u00e7al\u0131\u015ft\u0131r\u0131n.\n    <\/li>\n<li><strong>Windows:<\/strong> Sistem \u00d6zellikleri -> Ortam De\u011fi\u015fkenleri'ne gidin ve <code>Path<\/code> de\u011fi\u015fkenine Go'nun <code>bin<\/code> dizinini (\u00f6rn: <code>C:\\Program Files\\Go\\bin<\/code>) ekleyin.<\/li>\n<\/ul>\n<p>Ayr\u0131ca, Go mod\u00fclleri i\u00e7in <code>GOPATH<\/code> de\u011fi\u015fkeni eskiden \u00f6nemliyken, Go 1.11 ve sonras\u0131 ile birlikte mod\u00fcller varsay\u0131lan ba\u011f\u0131ml\u0131l\u0131k y\u00f6netimi haline geldi\u011fi i\u00e7in <code>GOPATH<\/code>'in manuel olarak ayarlanmas\u0131 genellikle gerekmez. Go projeleriniz art\u0131k herhangi bir dizinde olu\u015fturulabilir.<\/p>\n<h3>Kurulumun Do\u011frulanmas\u0131<\/h3>\n<p>Kurulumun ba\u015far\u0131l\u0131 olup olmad\u0131\u011f\u0131n\u0131 kontrol etmek i\u00e7in terminal veya komut istemcisini a\u00e7\u0131n ve a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code>go version<\/pre>\n<p><\/code><\/p>\n<p>E\u011fer kurulum ba\u015far\u0131l\u0131ysa, Go'nun y\u00fckl\u00fc s\u00fcr\u00fcm\u00fcn\u00fc g\u00f6steren bir \u00e7\u0131kt\u0131 almal\u0131s\u0131n\u0131z, \u00f6rne\u011fin:<\/p>\n<pre><code>go version go1.22.1 linux\/amd64<\/pre>\n<p><\/code><\/p>\n<p>Bu \u00e7\u0131kt\u0131y\u0131 g\u00f6r\u00fcyorsan\u0131z, Go geli\u015ftirme ortam\u0131n\u0131z kullan\u0131ma haz\u0131rd\u0131r!<\/p>\n<h2>3. Temel Go S\u00f6zdizimi ve \u0130lk Program\u0131n\u0131z<\/h2>\n<p>Go'nun temel s\u00f6zdizimini anlamak, ilk program\u0131n\u0131z\u0131 yazmak i\u00e7in kritik \u00f6neme sahiptir. Bu b\u00f6l\u00fcmde, \"Hello, World!\" uygulamas\u0131ndan de\u011fi\u015fkenlere, kontrol yap\u0131lar\u0131na ve fonksiyonlara kadar temel Go kavramlar\u0131n\u0131 ele alaca\u011f\u0131z.<\/p>\n<h3>\"Hello, World!\" Uygulamas\u0131<\/h3>\n<p>Her programlama dilinde oldu\u011fu gibi, Go'ya da \"Hello, World!\" ile ba\u015flayal\u0131m. Yeni bir dosya olu\u015fturun (\u00f6rn: <code>main.go<\/code>) ve i\u00e7ine a\u015fa\u011f\u0131daki kodu yaz\u0131n:<\/p>\n<pre><code class=\"language-go\">package main\n\nimport \"fmt\"\n\nfunc main() {\n    fmt.Println(\"Merhaba, D\u00fcnya!\")\n}\n<\/pre>\n<p><\/code><\/p>\n<p>Bu kodu \u00e7al\u0131\u015ft\u0131rmak i\u00e7in terminalinizde dosyan\u0131n bulundu\u011fu dizine gidin ve a\u015fa\u011f\u0131daki komutu kullan\u0131n:<\/p>\n<pre><code>go run main.go<\/pre>\n<p><\/code><\/p>\n<p>\u00c7\u0131kt\u0131 olarak \"Merhaba, D\u00fcnya!\" g\u00f6rmelisiniz. Kodu inceleyelim:<\/p>\n<ul>\n<li><code>package main<\/code>: Her Go program\u0131 bir paket i\u00e7inde olmal\u0131d\u0131r. <code>main<\/code> paketi, \u00e7al\u0131\u015ft\u0131r\u0131labilir uygulamalar i\u00e7in \u00f6zel bir pakettir.<\/li>\n<li><code>import \"fmt\"<\/code>: <code>fmt<\/code> paketi, formatl\u0131 I\/O (giri\u015f\/\u00e7\u0131k\u0131\u015f) i\u015flemleri i\u00e7in fonksiyonlar sa\u011flar, <code>Println<\/code> bunlardan biridir.<\/li>\n<li><code>func main()<\/code>: <code>main<\/code> fonksiyonu, \u00e7al\u0131\u015ft\u0131r\u0131labilir Go programlar\u0131n\u0131n giri\u015f noktas\u0131d\u0131r.<\/li>\n<li><code>fmt.Println(\"Merhaba, D\u00fcnya!\")<\/code>: Ekrana metin yazd\u0131rmak i\u00e7in kullan\u0131l\u0131r.<\/li>\n<\/ul>\n<h3>De\u011fi\u015fkenler ve Veri Tipleri<\/h3>\n<p>Go'da de\u011fi\u015fkenler <code>var<\/code> anahtar kelimesiyle veya k\u0131sa bildirim operat\u00f6r\u00fc <code>:=<\/code> ile tan\u0131mlan\u0131r. Go statik tipli bir dil olmas\u0131na ra\u011fmen, \u00e7o\u011fu zaman tip \u00e7\u0131kar\u0131m\u0131 yapabilir.<\/p>\n<pre><code class=\"language-go\">package main\n\nimport \"fmt\"\n\nfunc main() {\n    \/\/ Tam bildirim\n    var ad string = \"Ali\"\n    var yas int = 30\n\n    \/\/ Tip \u00e7\u0131kar\u0131m\u0131 ile\n    soyad := \"Y\u0131lmaz\"\n    boy := 1.75 \/\/ float64\n\n    \/\/ Birden fazla de\u011fi\u015fken ayn\u0131 anda\n    var (\n        isStudent bool = true\n        dersSayisi int = 5\n    )\n\n    fmt.Println(\"Ad:\", ad, \"Soyad:\", soyad, \"Ya\u015f:\", yas, \"Boy:\", boy)\n    fmt.Println(\"\u00d6\u011frenci mi:\", isStudent, \"Ders Say\u0131s\u0131:\", dersSayisi)\n\n    \/\/ Sabitler (constants)\n    const PI = 3.14159\n    fmt.Println(\"Pi:\", PI)\n}\n<\/pre>\n<p><\/code><\/p>\n<p>Go'nun temel veri tipleri \u015funlard\u0131r:<\/p>\n<table border=\"1\">\n<thead>\n<tr>\n<th>Tip<\/th>\n<th>A\u00e7\u0131klama<\/th>\n<th>\u00d6rnek<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>bool<\/code><\/td>\n<td>Mant\u0131ksal de\u011ferler (<code>true<\/code>\/<code>false<\/code>)<\/td>\n<td><code>true<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>int<\/code>, <code>int8<\/code>, <code>int16<\/code>, <code>int32<\/code>, <code>int64<\/code><\/td>\n<td>\u0130mzal\u0131 tam say\u0131lar<\/td>\n<td><code>-42<\/code>, <code>100<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>uint<\/code>, <code>uint8<\/code>, <code>uint16<\/code>, <code>uint32<\/code>, <code>uint64<\/code>, <code>uintptr<\/code><\/td>\n<td>\u0130mzas\u0131z tam say\u0131lar<\/td>\n<td><code>0<\/code>, <code>255<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>float32<\/code>, <code>float64<\/code><\/td>\n<td>Kayan noktal\u0131 say\u0131lar<\/td>\n<td><code>3.14<\/code>, <code>-0.5<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>complex64<\/code>, <code>complex128<\/code><\/td>\n<td>Karma\u015f\u0131k say\u0131lar<\/td>\n<td><code>1+2i<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>string<\/code><\/td>\n<td>Karakter dizileri<\/td>\n<td><code>\"Merhaba\"<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>rune<\/code><\/td>\n<td>Unicode karakter (<code>int32<\/code> alias'\u0131)<\/td>\n<td><code>'a'<\/code>, <code>'\u00fc'<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>byte<\/code><\/td>\n<td>8-bit tam say\u0131 (<code>uint8<\/code> alias'\u0131)<\/td>\n<td><code>0<\/code>, <code>255<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Kontrol Yap\u0131lar\u0131 (if, for, switch)<\/h3>\n<p>Go'da ko\u015fullu ifadeler (<code>if<\/code>) ve d\u00f6ng\u00fcler (<code>for<\/code>) di\u011fer dillerden farkl\u0131 baz\u0131 \u00f6zelliklere sahiptir. <code>switch<\/code> ifadesi ise daha esnek bir yap\u0131 sunar.<\/p>\n<pre><code class=\"language-go\">package main\n\nimport \"fmt\"\n\nfunc main() {\n    \/\/ if ifadesi (parantez yok!)\n    x := 10\n    if x > 5 {\n        fmt.Println(\"x 5'ten b\u00fcy\u00fck.\")\n    } else if x == 5 {\n        fmt.Println(\"x 5'e e\u015fit.\")\n    } else {\n        fmt.Println(\"x 5'ten k\u00fc\u00e7\u00fck.\")\n    }\n\n    \/\/ if ile k\u0131sa bildirim\n    if y := 20; y > 15 {\n        fmt.Println(\"y 15'ten b\u00fcy\u00fck ve de\u011feri:\", y)\n    }\n\n    \/\/ for d\u00f6ng\u00fcs\u00fc (tek d\u00f6ng\u00fc yap\u0131s\u0131)\n    for i := 0; i < 5; i++ {\n        fmt.Println(\"Say\u0131:\", i)\n    }\n\n    \/\/ while gibi kullan\u0131m\n    j := 0\n    for j < 3 {\n        fmt.Println(\"J:\", j)\n        j++\n    }\n\n    \/\/ Sonsuz d\u00f6ng\u00fc\n    \/\/ for { fmt.Println(\"Sonsuz!\") }\n\n    \/\/ switch ifadesi\n    gun := \"Pazartesi\"\n    switch gun {\n    case \"Pazartesi\":\n        fmt.Println(\"Haftan\u0131n ilk g\u00fcn\u00fc.\")\n    case \"Cuma\", \"Cumartesi\", \"Pazar\": \/\/ Birden fazla case\n        fmt.Println(\"Hafta sonuna yak\u0131n veya hafta sonu.\")\n    default:\n        fmt.Println(\"Hafta i\u00e7i bir g\u00fcn.\")\n    }\n\n    \/\/ switch ile ko\u015fullu ifadeler\n    sayi := 7\n    switch { \/\/ switch true\n    case sayi < 0:\n        fmt.Println(\"Negatif\")\n    case sayi % 2 == 0:\n        fmt.Println(\"\u00c7ift\")\n    default:\n        fmt.Println(\"Tek ve pozitif\")\n    }\n}\n<\/pre>\n<p><\/code><\/p>\n<h3>Fonksiyonlar<\/h3>\n<p>Fonksiyonlar, Go'da kodun yeniden kullan\u0131labilirli\u011fini ve mod\u00fclerli\u011fini sa\u011flayan temel yap\u0131lard\u0131r. Birden fazla de\u011fer d\u00f6nd\u00fcrebilirler.<\/p>\n<pre><code class=\"language-go\">package main\n\nimport \"fmt\"\n\n\/\/ \u0130ki say\u0131y\u0131 toplayan fonksiyon\nfunc topla(a int, b int) int {\n    return a + b\n}\n\n\/\/ Birden fazla de\u011fer d\u00f6nd\u00fcren fonksiyon\nfunc takas(x, y string) (string, string) {\n    return y, x\n}\n\n\/\/ Parametre tipleri ayn\u0131 ise k\u0131saltma\nfunc carp(a, b int) int {\n    return a * b\n}\n\nfunc main() {\n    sonuc := topla(5, 3)\n    fmt.Println(\"Toplam:\", sonuc)\n\n    str1, str2 := takas(\"Merhaba\", \"Go\")\n    fmt.Println(\"Takas sonras\u0131:\", str1, str2)\n\n    urun := carp(4, 6)\n    fmt.Println(\"\u00c7arp\u0131m:\", urun)\n}\n<\/pre>\n<p><\/code><\/p>\n<h2>4. Go Paketleri ve Mod\u00fclleri<\/h2>\n<p>Go'da kod organizasyonu ve ba\u011f\u0131ml\u0131l\u0131k y\u00f6netimi paketler ve mod\u00fcller arac\u0131l\u0131\u011f\u0131yla yap\u0131l\u0131r. Bu yap\u0131lar, b\u00fcy\u00fck projelerin y\u00f6netilebilirli\u011fini art\u0131r\u0131r ve kodun yeniden kullan\u0131labilirli\u011fini te\u015fvik eder.<\/p>\n<h3>Paket Kavram\u0131<\/h3>\n<p>Go'da her dosya bir pakete aittir. Paketler, ilgili fonksiyonlar\u0131, tipleri ve de\u011fi\u015fkenleri bir araya getirir. <code>main<\/code> paketi, \u00e7al\u0131\u015ft\u0131r\u0131labilir programlar i\u00e7in \u00f6zeldir. Di\u011fer paketler, bir k\u00fct\u00fcphane g\u00f6revi g\u00f6r\u00fcr ve ba\u015fka paketler taraf\u0131ndan i\u00e7e aktar\u0131labilir (<code>import<\/code>).<\/p>\n<p>\u00d6rne\u011fin, bir <code>matematik<\/code> paketi olu\u015ftural\u0131m:<\/p>\n<p><code>matematik\/hesapla.go<\/code>:<\/p>\n<pre><code class=\"language-go\">package matematik\n\n\/\/ Topla iki say\u0131y\u0131 toplar ve sonucu d\u00f6nd\u00fcr\u00fcr.\nfunc Topla(a, b int) int {\n    return a + b\n}\n\n\/\/ Carp iki say\u0131y\u0131 \u00e7arpar ve sonucu d\u00f6nd\u00fcr\u00fcr.\nfunc Carp(a, b int) int {\n    return a * b\n}\n<\/pre>\n<p><\/code><\/p>\n<p>Not: Go'da d\u0131\u015fa aktar\u0131lacak (public) fonksiyon, de\u011fi\u015fken veya tiplerin isimleri b\u00fcy\u00fck harfle ba\u015flamal\u0131d\u0131r.<\/p>\n<p><code>main.go<\/code>:<\/p>\n<pre><code class=\"language-go\">package main\n\nimport (\n    \"fmt\"\n    \"go_projem\/matematik\" \/\/ Kendi paketimizi import ettik\n)\n\nfunc main() {\n    fmt.Println(\"Toplam:\", matematik.Topla(10, 5))\n    fmt.Println(\"\u00c7arp\u0131m:\", matematik.Carp(4, 7))\n}\n<\/pre>\n<p><\/code><\/p>\n<h3>Go Mod\u00fclleri ile Ba\u011f\u0131ml\u0131l\u0131k Y\u00f6netimi<\/h3>\n<p>Go mod\u00fclleri, Go 1.11'den itibaren standart ba\u011f\u0131ml\u0131l\u0131k y\u00f6netim sistemidir. Projenizin ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 izlemenizi ve y\u00f6netmenizi sa\u011flar. Bir Go mod\u00fcl\u00fc ba\u015flatmak i\u00e7in proje dizininizde a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code>go mod init go_projem<\/pre>\n<p><\/code><\/p>\n<p>Bu komut, <code>go.mod<\/code> ad\u0131nda bir dosya olu\u015fturacakt\u0131r. Bu dosya, projenizin mod\u00fcl yolunu ve ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 (kulland\u0131\u011f\u0131n\u0131z harici paketler) i\u00e7erir.<\/p>\n<p>Bir harici paket kulland\u0131\u011f\u0131n\u0131zda (\u00f6rne\u011fin bir web framework'\u00fc), <code>go.mod<\/code> dosyas\u0131 otomatik olarak g\u00fcncellenir. \u00d6rne\u011fin:<\/p>\n<pre><code class=\"language-go\">package main\n\nimport (\n    \"fmt\"\n    \"github.com\/gorilla\/mux\" \/\/ Harici bir paket\n)\n\nfunc main() {\n    r := mux.NewRouter()\n    fmt.Println(\"Router olu\u015fturuldu:\", r)\n}\n<\/pre>\n<p><\/code><\/p>\n<p>Bu kodu kaydettikten sonra, <code>go run main.go<\/code> komutunu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda Go, <code>github.com\/gorilla\/mux<\/code> paketini otomatik olarak indirip <code>go.mod<\/code> ve <code>go.sum<\/code> dosyalar\u0131n\u0131 g\u00fcncelleyecektir.<\/p>\n<h3>Kendi Paketinizi Olu\u015fturma<\/h3>\n<p>Yukar\u0131daki \u00f6rnekte oldu\u011fu gibi, kendi paketlerinizi olu\u015fturmak olduk\u00e7a basittir. Proje dizininizde bir alt dizin (\u00f6rn: <code>matematik<\/code>) olu\u015fturun ve i\u00e7ine Go dosyalar\u0131n\u0131z\u0131 (\u00f6rn: <code>hesapla.go<\/code>) yerle\u015ftirin. Dosyan\u0131n en \u00fcst\u00fcnde <code>package matematik<\/code> bildirimini yapmay\u0131 unutmay\u0131n. Daha sonra bu paketi, <code>go.mod<\/code> dosyas\u0131nda tan\u0131mlad\u0131\u011f\u0131n\u0131z mod\u00fcl yoluyla (\u00f6rn: <code>go_projem\/matematik<\/code>) i\u00e7e aktarabilirsiniz.<\/p>\n<h2>5. Hata Y\u00f6netimi ve E\u015fzamanl\u0131l\u0131k Temelleri<\/h2>\n<p>Go, hatalar\u0131 ve e\u015fzamanl\u0131l\u0131\u011f\u0131 ele almak i\u00e7in kendine \u00f6zg\u00fc ve etkili yakla\u015f\u0131mlar sunar. Bu, sa\u011flam ve \u00f6l\u00e7eklenebilir uygulamalar geli\u015ftirmek i\u00e7in hayati \u00f6neme sahiptir.<\/p>\n<h3>Hata Y\u00f6netimi Yakla\u015f\u0131m\u0131<\/h3>\n<p>Go'da hata y\u00f6netimi, genellikle fonksiyonlar\u0131n son d\u00f6n\u00fc\u015f de\u011feri olarak <code>error<\/code> tipinde bir de\u011fer d\u00f6nd\u00fcrmesiyle yap\u0131l\u0131r. Bu yakla\u015f\u0131m, hatalar\u0131n a\u00e7\u0131k\u00e7a ele al\u0131nmas\u0131n\u0131 zorunlu k\u0131lar ve gizli istisnalar\u0131n \u00f6n\u00fcne ge\u00e7er.<\/p>\n<pre><code class=\"language-go\">package main\n\nimport (\n    \"errors\"\n    \"fmt\"\n)\n\n\/\/ Bolme fonksiyonu, s\u0131f\u0131ra b\u00f6lme hatas\u0131 d\u00f6nd\u00fcrebilir.\nfunc Bolme(bolunen, bolen float64) (float64, error) {\n    if bolen == 0 {\n        return 0, errors.New(\"s\u0131f\u0131ra b\u00f6lme hatas\u0131\")\n    }\n    return bolunen \/ bolen, nil\n}\n\nfunc main() {\n    sonuc, err := Bolme(10, 2)\n    if err != nil {\n        fmt.Println(\"Hata olu\u015ftu:\", err)\n    } else {\n        fmt.Println(\"B\u00f6lme sonucu:\", sonuc)\n    }\n\n    sonuc2, err2 := Bolme(10, 0)\n    if err2 != nil {\n        fmt.Println(\"Hata olu\u015ftu:\", err2) \/\/ Bu \u00e7al\u0131\u015facak\n    } else {\n        fmt.Println(\"B\u00f6lme sonucu:\", sonuc2)\n    }\n}\n<\/pre>\n<p><\/code><\/p>\n<p>Go'da <code>panic<\/code> ve <code>recover<\/code> de bulunur, ancak bunlar genellikle beklenmedik, kurtar\u0131lamaz hatalar i\u00e7in kullan\u0131l\u0131r ve rutin hata y\u00f6netimi i\u00e7in \u00f6nerilmez.<\/p>\n<h3>Goroutine'ler ve Kanallar<\/h3>\n<p>Go'nun e\u015fzamanl\u0131l\u0131k modeli, Goroutine'ler ve Kanallar \u00fczerine kuruludur. Goroutine'ler, \u00e7ok hafif i\u015f par\u00e7ac\u0131klar\u0131d\u0131r ve bir fonksiyonun \u00f6n\u00fcne <code>go<\/code> anahtar kelimesi ekleyerek ba\u015flat\u0131l\u0131rlar. Kanallar ise Goroutine'ler aras\u0131nda g\u00fcvenli ileti\u015fim kurmak i\u00e7in kullan\u0131l\u0131r.<\/p>\n<pre><code class=\"language-go\">package main\n\nimport (\n    \"fmt\"\n    \"time\"\n)\n\nfunc merhaba(s string) {\n    for i := 0; i < 3; i++ {\n        time.Sleep(100 * time.Millisecond)\n        fmt.Println(s)\n    }\n}\n\nfunc main() {\n    go merhaba(\"Merhaba Goroutine!\") \/\/ Goroutine olarak \u00e7al\u0131\u015ft\u0131r\n    merhaba(\"Merhaba Normal!\")       \/\/ Normal olarak \u00e7al\u0131\u015ft\u0131r\n\n    \/\/ Goroutine'lerin bitmesini beklemek i\u00e7in biraz zaman tan\u0131yal\u0131m\n    time.Sleep(time.Second)\n    fmt.Println(\"Ana fonksiyon bitti.\")\n\n    \/\/ Kanallar ile ileti\u015fim\n    mesajlar := make(chan string) \/\/ string tipinde bir kanal olu\u015ftur\n\n    go func() {\n        time.Sleep(500 * time.Millisecond)\n        mesajlar <- \"Kanal mesaj\u0131 geldi!\" \/\/ Kanala mesaj g\u00f6nder\n    }()\n\n    msg := <-mesajlar \/\/ Kanaldan mesaj al\n    fmt.Println(msg)\n}\n<\/pre>\n<p><\/code><\/p>\n<p>Bu \u00f6rnekte, <code>merhaba(\"Merhaba Goroutine!\")<\/code> fonksiyonu ayr\u0131 bir Goroutine olarak \u00e7al\u0131\u015f\u0131rken, <code>merhaba(\"Merhaba Normal!\")<\/code> ana Goroutine i\u00e7inde \u00e7al\u0131\u015f\u0131r. Kanallar, Goroutine'ler aras\u0131nda veri aktar\u0131m\u0131 i\u00e7in kullan\u0131l\u0131r ve veri yar\u0131\u015flar\u0131n\u0131 (data races) \u00f6nler.<\/p>\n<h3>Select \u0130fadesi<\/h3>\n<p><code>select<\/code> ifadesi, birden fazla kanal i\u015flemi \u00fczerinde beklemek i\u00e7in kullan\u0131l\u0131r. Bir kanaldan veri geldi\u011finde veya bir kanala veri g\u00f6nderilebildi\u011finde ilgili <code>case<\/code> blo\u011fu \u00e7al\u0131\u015f\u0131r. Bu, e\u015fzamanl\u0131 programlamada karma\u015f\u0131k senaryolar\u0131 y\u00f6netmek i\u00e7in g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r.<\/p>\n<pre><code class=\"language-go\">package main\n\nimport (\n    \"fmt\"\n    \"time\"\n)\n\nfunc main() {\n    c1 := make(chan string)\n    c2 := make(chan string)\n\n    go func() {\n        time.Sleep(1 * time.Second)\n        c1 <- \"bir\"\n    }()\n    go func() {\n        time.Sleep(2 * time.Second)\n        c2 <- \"iki\"\n    }()\n\n    for i := 0; i < 2; i++ {\n        select {\n        case msg1 := <-c1:\n            fmt.Println(\"Al\u0131nd\u0131:\", msg1)\n        case msg2 := <-c2:\n            fmt.Println(\"Al\u0131nd\u0131:\", msg2)\n        case <-time.After(500 * time.Millisecond): \/\/ Zaman a\u015f\u0131m\u0131\n            fmt.Println(\"Zaman a\u015f\u0131m\u0131!\")\n        }\n    }\n}\n<\/pre>\n<p><\/code><\/p>\n<h2>6. Go ile Web Geli\u015ftirme ve API Olu\u015fturma<\/h2>\n<p>Go, g\u00fc\u00e7l\u00fc a\u011f yetenekleri ve e\u015fzamanl\u0131l\u0131k deste\u011fi sayesinde web servisleri ve API'ler geli\u015ftirmek i\u00e7in m\u00fckemmel bir platformdur. Standart k\u00fct\u00fcphanesi bile olduk\u00e7a yeteneklidir.<\/p>\n<h3>Temel HTTP Sunucusu<\/h3>\n<p>Go'nun <code>net\/http<\/code> paketi, kolayca HTTP sunucular\u0131 olu\u015fturman\u0131za olanak tan\u0131r.<\/p>\n<pre><code class=\"language-go\">package main\n\nimport (\n    \"fmt\"\n    \"net\/http\"\n)\n\nfunc merhabaHandler(w http.ResponseWriter, r *http.Request) {\n    fmt.Fprintf(w, \"Merhaba, Go Web!\")\n}\n\nfunc main() {\n    http.HandleFunc(\"\/\", merhabaHandler) \/\/ \"\/\" yolu i\u00e7in merhabaHandler'\u0131 ata\n    fmt.Println(\"Sunucu http:\/\/localhost:8080 adresinde \u00e7al\u0131\u015f\u0131yor...\")\n    http.ListenAndServe(\":8080\", nil) \/\/ 8080 portunda sunucuyu ba\u015flat\n}\n<\/pre>\n<p><\/code><\/p>\n<p>Bu kodu \u00e7al\u0131\u015ft\u0131rd\u0131ktan sonra taray\u0131c\u0131n\u0131zdan <code>http:\/\/localhost:8080<\/code> adresine giderseniz \"Merhaba, Go Web!\" yaz\u0131s\u0131n\u0131 g\u00f6rmelisiniz.<\/p>\n<h3>Router Kullan\u0131m\u0131 (\u00d6r: chi, Gorilla Mux)<\/h3>\n<p>Daha karma\u015f\u0131k web uygulamalar\u0131 i\u00e7in, standart k\u00fct\u00fcphaneden daha geli\u015fmi\u015f bir router kullanmak yayg\u0131nd\u0131r. <code>gorilla\/mux<\/code> veya <code>go-chi\/chi<\/code> gibi pop\u00fcler k\u00fct\u00fcphaneler, URL parametrelerini, HTTP metotlar\u0131n\u0131 ve ara yaz\u0131l\u0131mlar\u0131 (middleware) daha iyi y\u00f6netmenizi sa\u011flar.<\/p>\n<p><code>github.com\/gorilla\/mux<\/code> ile \u00f6rnek:<\/p>\n<pre><code class=\"language-go\">package main\n\nimport (\n    \"fmt\"\n    \"log\"\n    \"net\/http\"\n\n    \"github.com\/gorilla\/mux\"\n)\n\nfunc anaSayfa(w http.ResponseWriter, r *http.Request) {\n    fmt.Fprintf(w, \"Ana Sayfa\")\n}\n\nfunc kullaniciDetay(w http.ResponseWriter, r *http.Request) {\n    vars := mux.Vars(r)\n    userID := vars[\"id\"]\n    fmt.Fprintf(w, \"Kullan\u0131c\u0131 ID: %s\", userID)\n}\n\nfunc main() {\n    r := mux.NewRouter()\n\n    r.HandleFunc(\"\/\", anaSayfa).Methods(\"GET\")\n    r.HandleFunc(\"\/kullanici\/{id}\", kullaniciDetay).Methods(\"GET\")\n\n    fmt.Println(\"Sunucu http:\/\/localhost:8080 adresinde \u00e7al\u0131\u015f\u0131yor...\")\n    log.Fatal(http.ListenAndServe(\":8080\", r))\n}\n<\/pre>\n<p><\/code><\/p>\n<p>Bu \u00f6rnekte, <code>\/kullanici\/{id}<\/code> gibi dinamik yollar\u0131 tan\u0131mlayabilir ve <code>mux.Vars(r)<\/code> ile URL parametrelerini alabilirsiniz.<\/p>\n<h3>JSON API \u00d6rne\u011fi<\/h3>\n<p>Go, JSON verileriyle \u00e7al\u0131\u015fmak i\u00e7in m\u00fckemmel yerle\u015fik deste\u011fe sahiptir. Bu, RESTful API'ler geli\u015ftirmek i\u00e7in \u00e7ok kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<pre><code class=\"language-go\">package main\n\nimport (\n    \"encoding\/json\"\n    \"fmt\"\n    \"log\"\n    \"net\/http\"\n)\n\ntype Urun struct {\n    ID    string  <code>json:\"id\"<\/code>\n    Ad    string  <code>json:\"ad\"<\/code>\n    Fiyat float64 <code>json:\"fiyat\"<\/code>\n}\n\nvar urunler []Urun\n\nfunc getUrunler(w http.ResponseWriter, r *http.Request) {\n    w.Header().Set(\"Content-Type\", \"application\/json\")\n    json.NewEncoder(w).Encode(urunler)\n}\n\nfunc main() {\n    urunler = append(urunler, Urun{ID: \"1\", Ad: \"Laptop\", Fiyat: 1200.0})\n    urunler = append(urunler, Urun{ID: \"2\", Ad: \"Mouse\", Fiyat: 25.0})\n\n    http.HandleFunc(\"\/api\/urunler\", getUrunler).Methods(\"GET\")\n\n    fmt.Println(\"API sunucusu http:\/\/localhost:8080 adresinde \u00e7al\u0131\u015f\u0131yor...\")\n    log.Fatal(http.ListenAndServe(\":8080\", nil))\n}\n<\/pre>\n<p><\/code><\/p>\n<p>Bu basit API \u00f6rne\u011fi, <code>\/api\/urunler<\/code> adresine yap\u0131lan GET iste\u011fine JSON format\u0131nda \u00fcr\u00fcn listesi d\u00f6nd\u00fcr\u00fcr. <code>encoding\/json<\/code> paketi, Go yap\u0131lar\u0131n\u0131 JSON'a ve JSON'dan Go yap\u0131lar\u0131na d\u00f6n\u00fc\u015ft\u00fcrmeyi kolayla\u015ft\u0131r\u0131r.<\/p>\n<h2>Sonu\u00e7<\/h2>\n<p>Go (Golang), modern yaz\u0131l\u0131m geli\u015ftirmenin ihtiya\u00e7lar\u0131na cevap veren, g\u00fc\u00e7l\u00fc, verimli ve \u00f6\u011frenmesi keyifli bir programlama dilidir. Bu rehberde, Go'nun neden pop\u00fcler oldu\u011funu, geli\u015ftirme ortam\u0131n\u0131n nas\u0131l kurulaca\u011f\u0131n\u0131, temel s\u00f6zdizimini, paket ve mod\u00fcl y\u00f6netimini, hata y\u00f6netimi ve e\u015fzamanl\u0131l\u0131k yakla\u015f\u0131mlar\u0131n\u0131 ve web geli\u015ftirme ile API olu\u015fturma temellerini ele ald\u0131k. Go'nun basitli\u011fi, performans\u0131 ve e\u015fzamanl\u0131l\u0131k yetenekleri, onu \u00f6zellikle mikroservisler, a\u011f uygulamalar\u0131 ve bulut tabanl\u0131 sistemler i\u00e7in cazip bir se\u00e7enek haline getiriyor. Art\u0131k Go ile kendi projelerinizi geli\u015ftirmeye ba\u015flamak i\u00e7in sa\u011flam bir temeliniz var. Unutmay\u0131n, pratik yapmak ve Go toplulu\u011fuyla etkile\u015fimde bulunmak, bu dili \u00f6\u011frenme s\u00fcrecinizi h\u0131z<\/p>\n","protected":false},"excerpt":{"rendered":"Go, ya da yayg\u0131n bilinen ad\u0131yla Golang, Google taraf\u0131ndan geli\u015ftirilen, a\u00e7\u0131k kaynakl\u0131 ve statik olarak tiplendirilmi\u015f bir programlama dilidir. Y\u00fckse&#8230;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-36943","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Go (Golang) ile Ba\u015flang\u0131\u00e7: Geli\u015ftiriciler \u0130\u00e7in Pratik Bir Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/go-golang-ile-baslangic-gelistiriciler-icin-pratik-bir-rehber\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Go (Golang) ile Ba\u015flang\u0131\u00e7: Geli\u015ftiriciler \u0130\u00e7in Pratik Bir Rehber\" \/>\n<meta property=\"og:description\" content=\"Go, ya da yayg\u0131n bilinen ad\u0131yla Golang, Google taraf\u0131ndan geli\u015ftirilen, a\u00e7\u0131k kaynakl\u0131 ve statik olarak tiplendirilmi\u015f bir programlama dilidir. Y\u00fckse...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/go-golang-ile-baslangic-gelistiriciler-icin-pratik-bir-rehber\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-25T05:30:42+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/go-golang-ile-baslangic-gelistiriciler-icin-pratik-bir-rehber\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/go-golang-ile-baslangic-gelistiriciler-icin-pratik-bir-rehber\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Go (Golang) ile Ba\u015flang\u0131\u00e7: Geli\u015ftiriciler \u0130\u00e7in Pratik Bir Rehber\",\"datePublished\":\"2025-12-25T05:30:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/go-golang-ile-baslangic-gelistiriciler-icin-pratik-bir-rehber\/\"},\"wordCount\":2068,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/go-golang-ile-baslangic-gelistiriciler-icin-pratik-bir-rehber\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/go-golang-ile-baslangic-gelistiriciler-icin-pratik-bir-rehber\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/go-golang-ile-baslangic-gelistiriciler-icin-pratik-bir-rehber\/\",\"name\":\"Go (Golang) ile Ba\u015flang\u0131\u00e7: Geli\u015ftiriciler \u0130\u00e7in Pratik Bir Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-12-25T05:30:42+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/go-golang-ile-baslangic-gelistiriciler-icin-pratik-bir-rehber\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/go-golang-ile-baslangic-gelistiriciler-icin-pratik-bir-rehber\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/go-golang-ile-baslangic-gelistiriciler-icin-pratik-bir-rehber\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Go (Golang) ile Ba\u015flang\u0131\u00e7: Geli\u015ftiriciler \u0130\u00e7in Pratik Bir Rehber\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Go (Golang) ile Ba\u015flang\u0131\u00e7: Geli\u015ftiriciler \u0130\u00e7in Pratik Bir Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/go-golang-ile-baslangic-gelistiriciler-icin-pratik-bir-rehber\/","og_locale":"tr_TR","og_type":"article","og_title":"Go (Golang) ile Ba\u015flang\u0131\u00e7: Geli\u015ftiriciler \u0130\u00e7in Pratik Bir Rehber","og_description":"Go, ya da yayg\u0131n bilinen ad\u0131yla Golang, Google taraf\u0131ndan geli\u015ftirilen, a\u00e7\u0131k kaynakl\u0131 ve statik olarak tiplendirilmi\u015f bir programlama dilidir. Y\u00fckse...","og_url":"https:\/\/fatihsoysal.com\/blog\/go-golang-ile-baslangic-gelistiriciler-icin-pratik-bir-rehber\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-12-25T05:30:42+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"12 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/go-golang-ile-baslangic-gelistiriciler-icin-pratik-bir-rehber\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/go-golang-ile-baslangic-gelistiriciler-icin-pratik-bir-rehber\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Go (Golang) ile Ba\u015flang\u0131\u00e7: Geli\u015ftiriciler \u0130\u00e7in Pratik Bir Rehber","datePublished":"2025-12-25T05:30:42+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/go-golang-ile-baslangic-gelistiriciler-icin-pratik-bir-rehber\/"},"wordCount":2068,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/go-golang-ile-baslangic-gelistiriciler-icin-pratik-bir-rehber\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/go-golang-ile-baslangic-gelistiriciler-icin-pratik-bir-rehber\/","url":"https:\/\/fatihsoysal.com\/blog\/go-golang-ile-baslangic-gelistiriciler-icin-pratik-bir-rehber\/","name":"Go (Golang) ile Ba\u015flang\u0131\u00e7: Geli\u015ftiriciler \u0130\u00e7in Pratik Bir Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-12-25T05:30:42+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/go-golang-ile-baslangic-gelistiriciler-icin-pratik-bir-rehber\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/go-golang-ile-baslangic-gelistiriciler-icin-pratik-bir-rehber\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/go-golang-ile-baslangic-gelistiriciler-icin-pratik-bir-rehber\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Go (Golang) ile Ba\u015flang\u0131\u00e7: Geli\u015ftiriciler \u0130\u00e7in Pratik Bir Rehber"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/36943","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=36943"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/36943\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=36943"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=36943"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=36943"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}