# # Go Harita

Harita, **anahtar** ve **değer** çiftlerinden oluşan bir koleksiyondur. Dizilerde verileri sadece index numaralarıyla tutabilirken **`map`** kullanımında indexler yerine anahtar değerler atayabiliriz.

Harita (map) veri tipini kullanabilmek için önce haritayı oluşturmalı, ardından başlatmalıyız.&#x20;

```go
var x map[string]int        // map oluşturma

x = make(map[string]int)    // map başlatma
```

{% hint style="info" %}
Bir **`map`** oluşturduğunuzda öntanımlı olarak **`nil`** olur. **`nil`**,  **pointers, interfaces, maps, slices, channels** ve **function** veri tiplerindeki boş değeri temsil eder. Tıpkı integer bir değişkenin öntanımlı değerinin 0 olması gibi. Bunun için oluşturduğumuz haritayı başlatmamız gerekir.
{% endhint %}

Örnek olarak anahtar tipini `string`, değer tipini `int` ayarladıktan sonra artık elemanları oluşturmaya başlayabilirsiniz.&#x20;

```go
x["sayi"] = 10
x["adet"] = 55

fmt.Println(x)    // map[adet:55 sayi:10]
```

Gördüğünüz gibi dizilerden farklı olarak indexler yerine istediğimiz değerleri kullanarak key oluşturabiliyoruz.

## 1. Harita Elemanlarına Erişim

Anahtar ve değer çiftiyle oluşturduğumuz haritalarda yer alan elemanlara sadece anahtarı kullanarak erişebiliriz.

```go
package main

import (
	"fmt"
)

func main() {

	var ogrenci map[string]string
	ogrenci = make(map[string]string)
	
	ogrenci["ad"] = "Deniz"
	ogrenci["soyad"] = "Barış"
	ogrenci["cinsiyet"] = "E"

	fmt.Println(ogrenci["ad"])				// Deniz
	fmt.Println(ogrenci["soyad"])			// Barış
	fmt.Println(ogrenci["cinsiyet"])	// E
}

```

## 2. Harita Elemanını Silmek

Haritadan bir elemanı silmek için delete() fonksiyonunu anahtar değer ile beraber kullanabilirsiniz.

```go
var ogrenci map[string]string
ogrenci = make(map[string]string)
	
ogrenci["ad"] = "Deniz"
ogrenci["soyad"] = "Barış"
ogrenci["cinsiyet"] = "E"

delete(ogrenci,"cinsiyet")

fmt.Println(ogrenci)	// map[ad:Deniz soyad:Barış]
```

## 3. Haritada Bir Anahtarın Olup Olmadığını Kontrol Etmek

Haritada anahtarın olup olmadığını kontrol edebiliriz. Eğer ilgili anahtara sahip bir değer varsa **true**, yoksa **false** döner.

```go
var ogrenci map[string]string
ogrenci = make(map[string]string)
	
ogrenci["ad"] = "Deniz"
ogrenci["soyad"] = "Barış"


deger1, kontrol1 := ogrenci["cinsiyet"]
deger2, kontrol2 := ogrenci["ad"]

fmt.Println("Mevcut mu?",kontrol1,"Değeri:",deger1)	
// Mevcut mu? false Değeri: 

fmt.Println("Mevcut mu?",kontrol2,"Değeri:",deger2)
// Mevcut mu? true Değeri: Deniz
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://derslik.kerteriz.net/go/temel-dersler/go-veri-tipleri/go-harita.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
