> For the complete documentation index, see [llms.txt](https://docs.furkangulsen.com/golang-dokumani/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.furkangulsen.com/golang-dokumani/variables.md).

# Variables

Değişkenler (variables), Go programlama dilinde veri saklamak için kullanılan temel yapı taşlarından biridir. Bir değişkene bir değer atayarak, o değişkenin tuttuğu değeri programda kullanabiliriz.

Değişkenlerin tanımlanması, `var` anahtar kelimesi ile yapılır. Tanımlanacak değişkenin adı ve veri tipi belirtilir. İlk değer verilmediğinde, Go dilinde değişkenlerin varsayılan bir değeri vardır.

```go
var name string
name = "John Doe"
```

Bu örnekte, `name` adında bir değişken tanımlanır ve bu değişkenin tipi `string` olarak belirlenir. Daha sonra, `name` değişkenine "John Doe" stringi atanır.

Değişkenlerin değeri değiştirilebilir ve farklı veri tiplerinde olabilirler.

```go
var age int
age = 32

age = "thirty-two" // compile error: cannot use "thirty-two" (type string) as type int in assignment
```

Bu örnekte, önce `age` adında bir değişken tanımlanır ve bu değişkenin tipi `int` olarak belirlenir. Daha sonra, `age` değişkenine 32 sayısı atanır.

Sonrasında `age` değişkenine "thirty-two" stringi atanmaya çalışılır ve program hata verir. Çünkü, `age` değişkeni int tipinde tanımlandığı için string tipinde bir değer atanamaz.

Değişkenler, programlarda belirli bir amaca hizmet etmek için kullanılırlar. Örneğin, bir kullanıcının ismi, yaşı veya bir dizi sayısal değer saklanabilir.

### Alıştırmalar

**1.Soru:** Bir kullanıcıdan yaşını girmesini isteyen bir Go programı yazın. Kullanıcının girdiği yaş değerini alın ve bu değeri bir string olarak saklamaya çalışın. Ardından kullanıcıya yaşın doğru formatta girilmediğini belirten bir hata mesajı gösterin.

<details>

<summary>Çözüm</summary>

```go
package main

import (
	"fmt"
)

func main() {
	var age string
	fmt.Print("Yaşınızı girin: ")
	fmt.Scanln(&age)

	_, err := strconv.Atoi(age)
	if err != nil {
		fmt.Println("Hata: Yaş bir sayı olmalıdır.")
	} else {
		fmt.Println("Yaşınız:", age)
	}
}
```

</details>

**2.Soru:** Bir kullanıcının adını ve soyadını girmesini isteyen bir Go programı yazın. Kullanıcının girdiği ad ve soyadı birleştirerek ekrana yazdırın. Ancak, eğer ad veya soyad boş bir string olarak girilirse, kullanıcıya hata mesajı gösterin.

<details>

<summary>Çözüm</summary>

```go
package main

import (
	"fmt"
	"strings"
)

func main() {
	var firstName, lastName string
	fmt.Print("Adınızı girin: ")
	fmt.Scanln(&firstName)
	fmt.Print("Soyadınızı girin: ")
	fmt.Scanln(&lastName)

	fullName := strings.TrimSpace(firstName + " " + lastName)

	if fullName == " " {
		fmt.Println("Hata: Geçerli bir ad ve soyad girilmelidir.")
	} else {
		fmt.Println("Tam Adınız:", fullName)
	}
}

```

</details>
