[{"data":1,"prerenderedAt":696},["ShallowReactive",2],{"post-\u002Ftr\u002Fgo-ve-degiskenler":3},{"page":4,"translation":534,"nav":550,"related":673,"random":687},{"id":5,"title":6,"body":7,"categories":532,"category":534,"date":535,"description":536,"draft":537,"extension":538,"image":539,"kind":534,"lang":326,"meta":540,"navigation":541,"path":542,"readingTime":192,"seo":543,"slug":544,"stem":545,"tags":546,"translationKey":534,"type":533,"updated":548,"__hash__":549},"postsTr\u002Ftr\u002Fgo-ve-degiskenler.md","Go ve Değişkenler",{"type":8,"value":9,"toc":525},"minimark",[10,60,78,81,97,100,103,108,114,125,141,153,162,168,196,198,202,205,208,237,240,249,259,289,312,314,319,406,408,412,418,438,441,470,481,484,498,500,505,521],[11,12,13,21],"blockquote",{},[14,15,16,17],"p",{},"💡 ",[18,19,20],"strong",{},"Özet (TL;DR):",[22,23,24,40,46],"ul",{},[25,26,27,30,31,35,36,39],"li",{},[18,28,29],{},"Değişken Tanımlama:"," Go'da değişkenler ",[32,33,34],"code",{},"var"," anahtar kelimesiyle veya fonksiyon içinde ",[32,37,38],{},":="," (kısa atama) operatörüyle tanımlanır.",[25,41,42,45],{},[18,43,44],{},"Katı Kurallar:"," Go'da tanımlanan her değişkenin mutlaka kullanılması gerekir (Kullanılmayan değişkenler derleme hatasına yol açar).",[25,47,48,51,52,55,56,59],{},[18,49,50],{},"Sabitler:"," Değiştirilemeyen değerler için ",[32,53,54],{},"const"," anahtar kelimesi kullanılır. Ardışık sabit değerleri otomatik artırmak için ",[32,57,58],{},"iota"," tercih edilir.",[14,61,62,63,68,69,68,73,77],{},"Daha önce Go'dan kısaca bahsetmiş, Windows ve Linux'ta kurulumlarının nasıl yapılacağını anlatmıştım. İlgili yazıların bağlantıları için bkz. ",[64,65,67],"a",{"href":66},"\u002Ftr\u002Fgo-programlama-dilinin-ozellikleri","Go Programlama Dilinin Özellikleri",", ",[64,70,72],{"href":71},"\u002Ftr\u002Fwindows-10-golang-kurulumu","Windows 10'da Go Kurulumu",[64,74,76],{"href":75},"\u002Ftr\u002Flinuxda-golang-kurulumu","Linux'ta Go Kurulumu",".",[14,79,80],{},"Go'ya giriş yaptığım bu ilk yazıda değişkenleri inceleyeceğim. Yazıda belirli seviyede bir programlama altyapınız olduğunu ve sadece Go'da yeni olduğunuzu varsayarak çok temel konulara değinmeyeceğim.",[14,82,83,84,87,88,91,92,96],{},"Go'da birçok veri tipi bulunsa da bu veri tiplerinde değişken tanımlamak için aynı yöntemi izliyoruz. Go'da değişkenlerle ilgili bilmeniz gereken ",[18,85,86],{},"bir numaralı kural",": Bir değişkeni tanımladıysanız kullanın, kullanmayacaksanız tanımlamayın. Bilmeniz gereken ",[18,89,90],{},"ikinci kural"," ise ",[64,93,95],{"href":94},"\u002Ftr\u002Fgarbage-collection-ve-golang","Go'da Garbage Collection (Çöp Toplayıcı)"," başlıklı yazının bir bölümünde değindiğim gibi değişkenleri tanımladığınız kapsamları (scope) doğru seçmenizdir. Değişken size nerede lazımsa orada tanımlayın; değişken tanımını gereksiz yere globalde veya daha üst kapsamlarda yapmayın.",[14,98,99],{},"Şimdi gelelim Go'da nasıl değişken ve sabit tanımladığımıza.",[101,102],"hr",{},[104,105,107],"h2",{"id":106},"goda-değişken-tanımlama-yöntemleri","Go'da Değişken Tanımlama Yöntemleri",[14,109,110,111,113],{},"Go'da değişken tanımlamak için birden fazla yöntem vardır. İlk ve en açık yöntem, başka dillerde de kullanılan ",[32,112,34],{}," anahtar kelimesini tercih etmektir.",[14,115,116,117,120,121,124],{},"Aşağıdaki satırda ",[32,118,119],{},"username"," adında ve ",[32,122,123],{},"string"," tipinde bir değişken tanımlıyoruz:",[126,127,132],"pre",{"className":128,"code":129,"language":130,"meta":131,"style":131},"language-go shiki shiki-themes github-light github-dark","var username string\n","go","",[32,133,134],{"__ignoreMap":131},[135,136,139],"span",{"class":137,"line":138},"line",1,[135,140,129],{},[14,142,143,144,146,147,120,150,152],{},"Aynı veri tipinde birden fazla değişkeni tek satırda tanımlayabiliriz. Örneğin aşağıda ",[32,145,119],{}," ve ",[32,148,149],{},"password",[32,151,123],{}," tipinde iki değişken tanımlıyoruz. Değişken adları arasında virgül kullanmamız gerekir:",[126,154,156],{"className":128,"code":155,"language":130,"meta":131,"style":131},"var username, password string\n",[32,157,158],{"__ignoreMap":131},[135,159,160],{"class":137,"line":138},[135,161,155],{},[14,163,164,165,167],{},"Değişken tanımlarını parantez içerisine alarak, tek bir ",[32,166,34],{}," anahtar kelimesi ile birden fazla değişken tanımlayabiliriz:",[126,169,171],{"className":128,"code":170,"language":130,"meta":131,"style":131},"var (\n    username, password string\n    loginCount int\n)\n",[32,172,173,178,184,190],{"__ignoreMap":131},[135,174,175],{"class":137,"line":138},[135,176,177],{},"var (\n",[135,179,181],{"class":137,"line":180},2,[135,182,183],{},"    username, password string\n",[135,185,187],{"class":137,"line":186},3,[135,188,189],{},"    loginCount int\n",[135,191,193],{"class":137,"line":192},4,[135,194,195],{},")\n",[101,197],{},[104,199,201],{"id":200},"goda-değişkenlere-başlangıç-değeri-atama","Go'da Değişkenlere Başlangıç Değeri Atama",[14,203,204],{},"Go bu konuda oldukça esnek bir yapı sunar ve değer atamak için birden fazla seçeneğiniz bulunur.",[14,206,207],{},"Değişken tanımını aşağıdaki şekilde yaparsanız Go hem bu değerleri başlangıç değeri olarak atayacak hem de bu değerlerin tipini otomatik olarak (type inference) tespit edecektir:",[126,209,211],{"className":128,"code":210,"language":130,"meta":131,"style":131},"var (\n    username = \"evrenbal\"\n    password = \"şifre\"\n    loginCount = 0\n)\n",[32,212,213,217,222,227,232],{"__ignoreMap":131},[135,214,215],{"class":137,"line":138},[135,216,177],{},[135,218,219],{"class":137,"line":180},[135,220,221],{},"    username = \"evrenbal\"\n",[135,223,224],{"class":137,"line":186},[135,225,226],{},"    password = \"şifre\"\n",[135,228,229],{"class":137,"line":192},[135,230,231],{},"    loginCount = 0\n",[135,233,235],{"class":137,"line":234},5,[135,236,195],{},[14,238,239],{},"İsterseniz bu işlemi tek satırda da gerçekleştirebilirsiniz:",[126,241,243],{"className":128,"code":242,"language":130,"meta":131,"style":131},"var username, password, loginCount = \"evrenbal\", \"şifre\", 0\n",[32,244,245],{"__ignoreMap":131},[135,246,247],{"class":137,"line":138},[135,248,242],{},[14,250,251,252,255,256,258],{},"Ancak Go'da değişken tanımlama ve ilk değerini atama için çoğu zaman yukarıdaki yöntemler yerine kısa yol kullanılır. Normal şartlarda ",[32,253,254],{},"="," ile bir değer atamak isterseniz bu değişkenin önceden tanımlanmış olması gerekir. Fakat değer atamayı ",[32,257,38],{}," ile yaparsanız Go değişkeni oluşturur, veri tipini verdiğiniz değere göre otomatik belirler ve bu değeri değişkene atar:",[126,260,262],{"className":128,"code":261,"language":130,"meta":131,"style":131},"func main() {\n    username, password := \"John\", \"Doe\"\n    loginCount := 0\n    fmt.Println(username, password, loginCount)\n}\n",[32,263,264,269,274,279,284],{"__ignoreMap":131},[135,265,266],{"class":137,"line":138},[135,267,268],{},"func main() {\n",[135,270,271],{"class":137,"line":180},[135,272,273],{},"    username, password := \"John\", \"Doe\"\n",[135,275,276],{"class":137,"line":186},[135,277,278],{},"    loginCount := 0\n",[135,280,281],{"class":137,"line":192},[135,282,283],{},"    fmt.Println(username, password, loginCount)\n",[135,285,286],{"class":137,"line":234},[135,287,288],{},"}\n",[14,290,291,292,295,296,299,300,303,304,307,308,311],{},"Bu yöntemde veri tipleri konusunda dikkatli olmalısınız. (İleriki yazılarda Go'da veri tiplerine detaylıca değineceğim.) Örneğin ",[32,293,294],{},"loginCount := 0"," olarak tanımladığımızda Go bu değişkenin tipini ",[32,297,298],{},"int"," olarak belirler; bu da sistem mimariniz ve işletim sisteminize göre ",[32,301,302],{},"int32"," veya ",[32,305,306],{},"int64"," veri tipine karşılık gelebilir. Siz bu değişken için daha küçük bir int tipi (örneğin ",[32,309,310],{},"int8",") öngörüyorsanız, bu şekilde değişken tanımlamak yerine en başta anlatıldığı gibi değişken tipini spesifik olarak belirtmelisiniz.",[101,313],{},[315,316,318],"h3",{"id":317},"go-değişken-tanımlama-yöntemleri-karşılaştırması","Go Değişken Tanımlama Yöntemleri Karşılaştırması",[320,321,322,339],"table",{},[323,324,325],"thead",{},[326,327,328,333,336],"tr",{},[329,330,332],"th",{"align":331},"left","Yöntem",[329,334,335],{"align":331},"Örnek",[329,337,338],{"align":331},"Kullanım Amacı \u002F Özelliği",[340,341,342,358,373,391],"tbody",{},[326,343,344,350,355],{},[345,346,347],"td",{"align":331},[18,348,349],{},"Açık Tanımlama (Explicit)",[345,351,352],{"align":331},[32,353,354],{},"var x int",[345,356,357],{"align":331},"Değişken tipi belirtilir, varsayılan sıfır değeri (zero value) atanır.",[326,359,360,365,370],{},[345,361,362],{"align":331},[18,363,364],{},"Değer Atayarak (Type Inference)",[345,366,367],{"align":331},[32,368,369],{},"var x = 10",[345,371,372],{"align":331},"Go, atanan değere göre tipi otomatik belirler. Fonksiyon dışında kullanılabilir.",[326,374,375,380,385],{},[345,376,377],{"align":331},[18,378,379],{},"Kısa Atama (Short Hand)",[345,381,382],{"align":331},[32,383,384],{},"x := 10",[345,386,387,388,390],{"align":331},"Sadece fonksiyonlar içinde geçerlidir. ",[32,389,34],{}," kelimesine ihtiyaç duymaz.",[326,392,393,398,403],{},[345,394,395],{"align":331},[18,396,397],{},"Sabit Tanımlama",[345,399,400],{"align":331},[32,401,402],{},"const x = 10",[345,404,405],{"align":331},"Çalışma zamanında değiştirilemeyen değerler için kullanılır.",[101,407],{},[104,409,411],{"id":410},"goda-sabit-tanımlama-constants","Go'da Sabit Tanımlama (Constants)",[14,413,414,415,417],{},"Kimi zaman değişken değil, sabit tanımlamak isteyebilirsiniz. Go'da bunun için ",[32,416,54],{}," anahtar kelimesi kullanılır:",[126,419,421],{"className":128,"code":420,"language":130,"meta":131,"style":131},"const HTTPStatusOK = 200\nconst HTTPStatusNotFound = 404\nconst HTTPStatusInternalServerError = 500\n",[32,422,423,428,433],{"__ignoreMap":131},[135,424,425],{"class":137,"line":138},[135,426,427],{},"const HTTPStatusOK = 200\n",[135,429,430],{"class":137,"line":180},[135,431,432],{},"const HTTPStatusNotFound = 404\n",[135,434,435],{"class":137,"line":186},[135,436,437],{},"const HTTPStatusInternalServerError = 500\n",[14,439,440],{},"Sabit tanımlarken de değişkenlerde olduğu gibi gruplandırma yöntemini seçebiliriz:",[126,442,444],{"className":128,"code":443,"language":130,"meta":131,"style":131},"const (\n    HTTPStatusOK = 200\n    HTTPStatusNotFound = 404\n    HTTPStatusInternalServerError = 500\n)\n",[32,445,446,451,456,461,466],{"__ignoreMap":131},[135,447,448],{"class":137,"line":138},[135,449,450],{},"const (\n",[135,452,453],{"class":137,"line":180},[135,454,455],{},"    HTTPStatusOK = 200\n",[135,457,458],{"class":137,"line":186},[135,459,460],{},"    HTTPStatusNotFound = 404\n",[135,462,463],{"class":137,"line":192},[135,464,465],{},"    HTTPStatusInternalServerError = 500\n",[135,467,468],{"class":137,"line":234},[135,469,195],{},[14,471,472,473,475,476,480],{},"Go'da ",[32,474,58],{}," adı verilen özel bir ardışık sabit tanımlama tipi vardır. Ayrıntılı bilgi için ",[64,477,479],{"href":478},"\u002Ftr\u002Fgoda-iota-nedir-iota-ne-zaman-ve-nerede-kullanilir","Go'da iota nedir? Iota ne zaman ve nerede kullanılır?"," başlıklı yazımı okuyabilirsiniz.",[14,482,483],{},"Go'da veri tiplerini bir sonraki yazımda inceleyeceğim. Sorunuz olursa yorumlara yazabilirsiniz.",[14,485,486,487],{},"Kapak fotoğrafı ",[18,488,489],{},[64,490,497],{"href":491,"rel":492,"target":496},"https:\u002F\u002Fwww.pexels.com\u002F@serpstat-177219?utm_content=attributionCopyText&utm_medium=referral&utm_source=pexels",[493,494,495],"nofollow","noopener","noreferrer","_blank","Serpstat",[101,499],{},[501,502,504],"h5",{"id":503},"bu-yazıda-yapılan-değişiklikler","Bu Yazıda Yapılan Değişiklikler",[22,506,507,510],{},[25,508,509],{},"11.05.2022: Yazı özeti düzenlendi.",[25,511,512,513,516,517,520],{},"20.06.2026: Kod hatası düzeltildi (",[32,514,515],{},"fmt.println"," -> ",[32,518,519],{},"fmt.Println","), imla düzeltmeleri yapıldı, TL;DR özet ve karşılaştırma tablosu eklendi.",[522,523,524],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":131,"searchDepth":180,"depth":180,"links":526},[527,528,531],{"id":106,"depth":180,"text":107},{"id":200,"depth":180,"text":201,"children":529},[530],{"id":317,"depth":186,"text":318},{"id":410,"depth":180,"text":411},[533],"technical",null,"2021-10-04","Go dilinde değişken tanımlama yöntemleri, kısa atama operatörleri, sabitler (constants) ve iota kullanımının temel esasları.",false,"md","\u002Fimages\u002Fhero\u002Fgo-degiskenler.avif",{},true,"\u002Ftr\u002Fgo-ve-degiskenler",{"title":6,"description":536},"go-ve-degiskenler","tr\u002Fgo-ve-degiskenler",[130,547],"golang","2022-05-11","m26r0kZ1csS8s4sT8rrFHUl9kulwTRb6lj9uQd6JqQg",{"prev":551,"next":554,"others":556,"lucky":670,"readingTime":192},{"path":552,"title":553},"\u002Ftr\u002Fobserver-tasarim-deseni-nedir","Observer Tasarım Deseni Nedir?",{"path":478,"title":555},"Go'da iota Nedir? iota Ne Zaman ve Nerede Kullanılır?",[557,560,563,566,569,572,575,578,580,583,586,588,591,594,597,600,601,604,607,610,613,616,619,622,624,627,630,633,636,639,642,643,646,649,652,655,658,661,664,667],{"path":558,"title":559},"\u002Ftr\u002Ffull-stack-proje-agaci","Full-Stack Proje Yol Haritası ve İçindekiler",{"path":561,"title":562},"\u002Ftr\u002Fes14-nedir-ecmascript-2023-nedir","ES14 nedir? ECMAScript 2023 nedir?",{"path":564,"title":565},"\u002Ftr\u002Fself-hosted-api-gateway-nasil-kurulur-kapsamli-rehber","Self-Hosted API Gateway Nasıl Kurulur? Kapsamlı Rehber",{"path":567,"title":568},"\u002Ftr\u002Fearly-return-erken-donus-nedir","Early Return \u002F Erken Dönüş nedir?",{"path":570,"title":571},"\u002Ftr\u002Fes13-nedir-ecmascript-2022-nedir","ES13 nedir? ECMAScript 2022 nedir?",{"path":573,"title":574},"\u002Ftr\u002Fmemento-tasarim-deseni-nedir","Memento Tasarım Deseni Nedir?",{"path":576,"title":577},"\u002Ftr\u002Fmediator-tasarim-deseni-nedir","Mediator Tasarım Deseni Nedir?",{"path":75,"title":579},"Linux'ta Golang Kurulumu",{"path":581,"title":582},"\u002Ftr\u002Fes5-nedir","ES5 Nedir? JavaScript Geliştiricileri İçin Kılavuz",{"path":584,"title":585},"\u002Ftr\u002Fes11-nedir-ecmascript-2020-nedir","ES11 Nedir? ECMAScript 2020 Nedir?",{"path":71,"title":587},"Windows 10 ve 11'de Golang Kurulumu ve GOPATH Yapılandırması",{"path":589,"title":590},"\u002Ftr\u002Fvisitor-tasarim-deseni-nedir","Visitor Tasarım Deseni Nedir?",{"path":592,"title":593},"\u002Ftr\u002Ftemplate-method-tasarim-deseni-nedir","Template Method Tasarım Deseni Nedir?",{"path":595,"title":596},"\u002Ftr\u002Fheadless-wordpress-hakkinda-her-sey","Headless WordPress Hakkında Her Şey",{"path":598,"title":599},"\u002Ftr\u002Fstate-tasarim-deseni-nedir","State Tasarım Deseni Nedir?",{"path":66,"title":67},{"path":602,"title":603},"\u002Ftr\u002Fopenlitespeed-ve-litespeed-enterprisei-reverse-proxy-olarak-kullanmak","OpenLiteSpeed ve LiteSpeed Enterprise Sunucularını Reverse Proxy Olarak Kullanmak",{"path":605,"title":606},"\u002Ftr\u002Fubuntu-guncellemesi-sonrasi-cyberpanele-ulasilamama-sorunlarini-giderme","Ubuntu Güncellemesi Sonrası CyberPanel'e Ulaşılamama Sorunlarını Giderme",{"path":608,"title":609},"\u002Ftr\u002Fcommand-tasarim-deseni-nedir","Command Tasarım Deseni Nedir?",{"path":611,"title":612},"\u002Ftr\u002Fphp-generator-ve-iterator-farki","PHP'de Generator ve Iterator Arasındaki Temel Farklar",{"path":614,"title":615},"\u002Ftr\u002Fdocker-ve-portainer-kurulumu","Docker ve Portainer Kurulumu",{"path":617,"title":618},"\u002Ftr\u002Fmerhabadunya","Merhaba Dünya",{"path":620,"title":621},"\u002Ftr\u002Ftailwind-css-nerede-kullanilir-tailwind-css-nerede-kullanilmaz","Tailwind CSS Nerede Kullanılır? Tailwind CSS Nerede Kullanılmaz?",{"path":94,"title":623},"Garbage Collection ve Go (Golang)",{"path":625,"title":626},"\u002Ftr\u002Fproxy-tasarim-deseni-nedir","Proxy Tasarım Deseni Nedir?",{"path":628,"title":629},"\u002Ftr\u002Fvite-nedir","Vite Nedir? Modern Web Geliştirme ve Paketleme Aracı",{"path":631,"title":632},"\u002Ftr\u002Ffull-stack-proje-gelistiriyoruz","Full Stack Proje Geliştiriyoruz",{"path":634,"title":635},"\u002Ftr\u002Fubuntu-20-04-uzerinde-cyberpanel-kurulumu","Ubuntu 20.04 üzerinde CyberPanel kurulumu",{"path":637,"title":638},"\u002Ftr\u002Ftasarim-kaliplari-design-patterns-abstract-factory-nedir","Abstract Factory Tasarım Deseni Nedir?",{"path":640,"title":641},"\u002Ftr\u002Fubuntu-24-04-uzerinde-cyberpanel-kurulumu","Ubuntu 24.04 LTS ve 22.04 LTS Üzerinde CyberPanel Kurulumu",{"path":552,"title":553},{"path":644,"title":645},"\u002Ftr\u002Fes16-nedir-ecmascript-2025-nedir","ES16 nedir? ECMAScript 2025 nedir?",{"path":647,"title":648},"\u002Ftr\u002Frest-api-kimlik-dogrulama-nasil-yapilir","REST API Kimlik Doğrulama Nasıl Yapılır?",{"path":650,"title":651},"\u002Ftr\u002Fgo-veri-tipleri-struct","Go Veri Tipleri: Struct",{"path":653,"title":654},"\u002Ftr\u002Ffactory-method-ve-abstract-factory-farki-nedir","Factory Method ve Abstract Factory Farkı Nedir?",{"path":656,"title":657},"\u002Ftr\u002Faws-ec2-uzerinde-docker-ve-full-stack-web-performansi","AWS EC2 Üzerinde Docker ve Full Stack Web Performansı",{"path":659,"title":660},"\u002Ftr\u002Fdocker-ile-mariadb-kurulumu","Docker ile MariaDB Kurulumu",{"path":662,"title":663},"\u002Ftr\u002Fnostalji-ibibik-online","Nostalji: İbibik Online (1998'den Bir Web Macerası)",{"path":665,"title":666},"\u002Ftr\u002Fekran-filtresi-mavi-isik-filtresi-flux","Gözlere dost, mavi ışığa düşman ekran filtresi f.lux",{"path":668,"title":669},"\u002Ftr\u002Fprototype-tasarim-deseni-nedir","Prototype Tasarım Deseni Nedir?",{"path":671,"title":672},"\u002Ftr\u002Fwebpack-nedir","Webpack Nedir? Modern JavaScript Paketleyici Ekosistemi",[674,676,680,684],{"path":650,"title":651,"date":675},"2021-10-14",{"path":677,"title":678,"date":679},"\u002Ftr\u002Fgo-veri-tipleri-map","Go Veri Tipleri - Map","2021-10-13",{"path":681,"title":682,"date":683},"\u002Ftr\u002Fgo-slice-veri-tipi","Go Veri Tipleri: Slice","2021-10-10",{"path":685,"title":686,"date":683},"\u002Ftr\u002Fgo-veri-tipleri-string-integer-float-complex-boolean-ve-array","Go Veri Tipleri - String, Integer, Float, Complex, Boolean ve Array",[688,692,694],{"path":689,"title":690,"date":691},"\u002Ftr\u002Frest-api-hata-yonetimi","REST Api Hata Yönetimi","2021-02-15",{"path":576,"title":577,"date":693},"2021-10-03",{"path":598,"title":599,"date":695},"2021-10-06",1782142004878]