# Claude Code ile Go geliştirme: kurulum, test ve pratik ipuçları

Adres: https://agentvera.dev/blog/claude-code-ile-go/ · Yayın: 2026-11-01

Claude Code’u Go projenizde nasıl kullanacağınızı öğrenin: CLAUDE.md kurulumu, go test ve go vet ile doğrulama, tablo testleri ve goroutine güvenliği.

**Kısaca:**

- Claude Code, Go projesinde claude ile başlatılır; CLAUDE.md dosyasındaki build, test ve lint kurallarını okur.
- Tablo testleri, hata sarmalama, interface ve context kullanımı gibi Go’ya özgü işlerde net isteklerle en iyi sonucu verir.
- AgentVera ile birden fazla ajanı ayrı git worktree’lerde çalıştırarak dosya çakışması olmadan paralel refactor yapabilirsiniz.

Claude Code, bir Go projesinde terminalde `claude` komutuyla başlar ve proje kökündeki CLAUDE.md dosyasını okur. Go modülleri, tablo testleri, `go test`, `gofmt` ve `go vet` ile doğrudan çalıştığı için refactor, test yazımı ve hata ayıklama işlerini hızlandırır. En iyi sonucu, komutları ve Go kurallarını CLAUDE.md içinde açıkça tanımladığınızda alırsınız. Daha genel kurulum için [Claude Code](/ajanlar/claude-code/) sayfasına bakabilirsiniz.

## Neden Claude Code Go işlerine uygun?

Go’nun derleyici hızı ve açık hata yönetimi, ajanın hızlı geri bildirim almasını sağlar. Ajan `go build ./...` ve `go test ./...` çalıştırıp hatayı okuyabilir; bu, kapalı kutu tahmin yerine somut bir döngü kurar. Paket sınırları ve `internal` klasörleri net olduğunda Claude Code hangi dosyaya dokunacağını daha iyi seçer. Arayüzler genellikle küçük olduğu için mock ve tablo testi üretimi de tutarlıdır. Yine de ajanın en büyük avantajı, sizin verdiğiniz Go kurallarını her adımda uygulamasıdır; örneğin `fmt.Errorf` ile hata sarmalama, `context.Context` yayma ve `t.Run` kullanımı. Bu uyum, özellikle çok paketli projelerde kod tabanını bozmadan küçük iyileştirmeler yapmayı kolaylaştırır.

Go modülleri sayesinde bağımlılıklar zaten go.mod ve go.sum içinde tanımlıdır. Claude Code bu dosyaları okur, eksik modülleri `go mod tidy` ile çözebilir ve sürüm uyuşmazlıklarını test çıktısından yakalayabilir. Ayrıca `go build` önbelleği sayesinde ardışık çalıştırmalar hızlı olur; ajan aynı komutu tekrar çalıştırdığında değişmeyen paketleri yeniden derlemez. Bu hız, uzun bir refactor sırasında her küçük adımda doğrulama yapmayı pratik kılar. Yine de ajanın ürettiği kodu yalnızca derleyici geçti diye kabul etmeyin; `go vet` ve `go test -race` ek kalite kapılarıdır.

## Projeyi Claude Code için hazırlama

Claude Code, proje klasörüne `claude` yazdığınızda CLAUDE.md dosyasını otomatik okur. Bu dosyaya Go’ya özgü komutlar ve kurallar koymak, ajanın her seferinde aynı doğrulamayı yapmasını sağlar. Kısa ve net tutun; uzun stil rehberi yerine ajanın karar anında uygulayacağı maddeler yazın. Örnek bir CLAUDE.md:

```
# CLAUDE.md

## Komutlar
- Build: `go build ./...`
- Test: `go test ./...`
- Tek paket: `go test ./internal/storage/...`
- Lint: `go vet ./...`
- Format: `gofmt -w .`

## Klasör kuralları
- `cmd/` yalnızca main paketleri.
- `internal/` dışa kapalı uygulama kodu.
- `pkg/` yeniden kullanılabilir kütüphaneler.

## Go kuralları
- Hataları sarmala: `fmt.Errorf("kullanıcı deposu: %w", err)`.
- Arayüzleri tüketen tarafta tanımla.
- Paylaşılan durumda mutex veya channel kullan; goroutine ömrünü `context.Context` ile yönet.
- Testleri tablo odaklı yaz; her senaryo için `t.Run` kullan.
- Test yardımcılarında `t.Helper()` çağır.
```

Bu dosya, ajanın `go test` ve `go vet` komutlarını kendiliğinden çalıştırmasını ve Go kurallarına uymasını sağlar. CLAUDE.md dosyasını ilk komuttan önce proje köküne koyun; ajan her yeni görevde bu kuralları referans alır. Başlangıç rehberi için [Claude Code nasıl kullanılır?](/blog/claude-code-nasil-kullanilir/) yazısına da göz atabilirsiniz.

CLAUDE.md içine `go version` veya `go env` gibi bilgileri yazmanıza gerek yoktur; ajan ortamı zaten görür. Ancak proje `CGO_ENABLED=0` gibi özel bir ortam değişkeni gerektiriyorsa bunu belirtmek faydalıdır. Aynı şekilde `-tags=integration` gibi build tag’leri veya `-race` zorunluluğu varsa komut satırlarına ekleyin. Bu, ajanın testleri eksik çalıştırmasını engeller. Ayrıca `go test -count=1` kullanarak test önbelleğini devre dışı bırakmasını isteyebilirsiniz; böylece ajan aynı testi arka arkaya çalıştırdığında gerçek sonucu alır.

## Çalışma döngüsü ve örnek istekler

Claude Code ile Go projesinde verimli çalışmak için önce plan isteyin, sonra küçük bir değişiklik yaptırın, testleri çalıştırın ve diff’i inceleyin. Ajan tek seferde büyük bir paketi yeniden yazarsa hata ayıklamak zorlaşır; o yüzden her isteği tek sorumlulukla sınırlandırın. Şu döngüyü uygulayın:

1. Ajan’dan mevcut ilgili kodu ve testleri incelemesini isteyin; neyin değişeceğini sözlü olarak planlatın.
2. Tek dosya veya tek fonksiyon seviyesinde küçük bir değişiklik yaptırın.
3. Ajanın `go test ./...`, `go vet ./...` ve `gofmt -w .` komutlarını çalıştırmasını sağlayın; hata varsa düzeltmesini isteyin.
4. `git diff` ile değişiklikleri inceleyin; yalnızca beklenen satırların değiştiğinden emin olun.
5. Bir sonraki küçük adıma geçin.

Şu istekler tipik Go işlerinde iyi başlangıçtır:

- “Bu HTTP handler paketini incele; context iptalini doğru şekilde yayan ve hataları sarmalayan bir yapı öner.”
- “internal/repo/dosya.go içindeki veri erişimini interface arkasına al ve PostgreSQL mock’u için tablo testi yaz.”
- “main.go’daki başlatma sırasını yalınlaştır; `go vet ./...` ve `gofmt -w .` komutlarını temiz geçmesini sağla.”
- “Goroutine leak olabilecek yerleri tara; kapama işlevlerini `context.Context` ile bağla.”
- “Bu diff’i incele; nil kontrolü eksiklerini, hata sarmalama hatalarını ve test kapsamındaki boşlukları raporla.”

Her istekten sonra ajanın çalıştırdığı komutlara ve diff’e bakın. Uygulamalı kontrol listesi için [Claude Code en iyi pratikler](/blog/claude-code-en-iyi-pratikler/) yazısı faydalı olur.

## İyi olduğu işler ve dikkat edilecek yerler

Claude Code, Go projelerinde özellikle şu işlerde iyi çalışır: küçük arayüzler tanımlama, tablo testlerini genişletme, `context` yayma, hata sarmalama düzeltmeleri, `go vet` uyarılarını temizleme ve tekrarlayan CRUD kodlarını üretme. Buna karşılık ajanın her önerdiği soyutlamayı kabul etmeyin. Gereksiz interface katmanları paketler arası bağımlılığı artırabilir ve testleri karmaşıklaştırabilir. Ayrıca goroutine ve channel değişikliklerinde veri yarışı oluşabilir; mutlaka `go test -race ./...` çalıştırın. Ajan bazen yalnızca verdiğiniz komutları çalıştırır ve `go.sum` değişikliklerini ya da `internal` paket sınırlarını gözden kaçırabilir. Bu nedenle diff’i okumadan merge etmeyin.

Özellikle şu noktalarda ajanı yakından izleyin: `sync.WaitGroup` veya `defer` sıralaması değiştiğinde kaynak kapatma hataları oluşabilir. Ajan bazen error döndürmek yerine log.Fatal çağırmayı önerebilir; kütüphane kodunda bu büyük bir anti-patterndir. Arayüzü tüketen tarafta tanımlamak yerine üreten tarafta tanımlarsa paket bağımlılıkları bozulabilir. `go.mod` içindeki `replace` yönergelerini veya `exclude` kurallarını kaldırmak isteyebilir; bu, üretim dışı bağımlılıkları geri getirebilir. Tüm bu durumlarda ajanın önerisini kabul etmeden önce `go list -m all` çıktısını inceleyin.

## Test ve doğrulama

Go projesinde ajanın ürettiği kodu doğrulamanın en kısa yolu, onu standart araçları çalıştırmaya zorlamaktır. İstek içinde net komutlar verin; yalnızca “testleri çalıştır” demek yerine `go test -race ./...` veya `go vet ./...` yazın. Aşağıdaki tablo, hangi doğrulamanın hangi istekle daha güvenilir olduğunu gösterir:

| Doğrulama | Ajan için net istek | Ne yakalar |
|---|---|---|
| `go test ./...` | “Tüm paketleri test et, hataları düzelt” | Regresyon ve bozuk testler |
| `go test -race ./...` | “Race testlerini çalıştır ve veri yarışlarını raporla” | Goroutine ve channel hataları |
| `go test -count=1 ./...` | “Test önbelleğini atla, tüm testleri taze çalıştır” | Güncel olmayan test sonuçları |
| `go vet ./...` | “Vet uyarılarını temizle” | Şüpheli yapılar, yanlış format argümanları |
| `gofmt -w .` | “Biçimlendirmeyi uygula” | Kod formatı tutarlılığı |

Tablo testleri için ajana mevcut test dosyasını örnek gösterin; böylece aynı stili korur. Her doğrulama sonrası `go test` çıktısını birlikte inceleyin; ajan test hatasını yanlış yorumlayabilir ve gereksiz yere kodu değiştirebilir. Ayrıca ajanın test komutlarını çalıştırdığından emin olun; bazen yalnızca statik analiz yapıp testleri atlayabilir.

Ajanın test yazarken dikkat etmesi gereken Go detayları vardır: `t.Run` içinde `t.Parallel()` çağrısını dikkatli kullanın, çünkü paylaşılan durum testler arasında kaçaklara yol açabilir; mock’ları `t.Cleanup` ile kaydedin; `httptest.NewServer` gibi test sunucularını kapatmayı unutmayın; ve `errors.Is`/`errors.As` kullanarak sarmalanmış hataları kontrol edin. Bu konularda ajanı yönlendirmek, testlerin kalitesini artırır. Eğer proje standard library dışında bir mock kütüphanesi kullanmıyorsa, el yazımı mock’ların arayüzü tam karşıladığından emin olun; ajan bazen eksik metot bırakabilir.

## Birden fazla ajanı Go projesinde çalıştırma

AgentVera, Claude Code gibi ajanların gerçek komut satırı araçlarını tek pencerede yan yana çalıştıran bir masaüstü uygulamasıdır. Go projelerinde asıl fark, her ajanın kendi git worktree’sinde çalışabilmesidir; böylece iki ajan aynı dosyayı ezmez ve paralel refactor yapılabilir. Ajanın turu bittiğinde ikinci modelin yaptığı otomatik kod incelemesi, hata sarmalama ve goroutine güvenliği gibi Go detaylarını yakalamaya yardımcı olur. Checkpoint’ler sayesinde riskli bir refactor adımı tek tıkla geri alınabilir; token bütçeleri de uzun test döngülerinde ajanın kontrolden çıkmasını engeller. Bu dört özellik, çok paketli Go projelerinde paralel çalışmayı güvenli ve denetlenebilir hale getirir. Kullanım detayları için [AgentVera nasıl kullanılır](/blog/agentvera-nasil-kullanilir/) sayfasına bakabilirsiniz.

## Sonuç

Claude Code, Go projelerinde `claude` komutuyla, CLAUDE.md kuralları ve standart Go araçlarıyla birlikte güçlü bir yardımcıdır. Ona net komutlar, küçük adımlar ve doğrulama görevleri verin; go test, go vet ve gofmt çıktısını birlikte değerlendirin. Özellikle interface, goroutine ve hata yönetimi değişikliklerinde diff’i dikkatle inceleyin. Birden fazla ajanla paralel çalışacaksanız işleri ayrı worktree’lere bölmek en pratik yoldur.

## Sık sorulanlar

**Claude Code Go projelerinde hangi komutları çalıştırabilir?** Proje klasöründe claude başlattığınızda go build ./..., go test ./..., go vet ./... ve gofmt -w . gibi standart Go araçlarını çalıştırabilir. CLAUDE.md içinde tanımladığınız komutları izler.

**Claude Code ile mevcut Go kodunu refactor etmek güvenli mi?** Küçük adımlar halinde istek verip her adımda go test ve go vet çalıştırırsanız genellikle güvenlidir. Yine de diff’i inceleyin; özellikle interface eklerken ve goroutine değişikliklerinde dikkatli olun.

**Claude Code Go testlerini kendi başına yazabilir mi?** Evet, tablo testleri ve mock’lar için net imza verirseniz go test ile çalışan test kodu üretebilir. Ancak tüm hataları yakalamak için siz doğrulama komutlarını çalıştırmasını isteyin.

**Claude Code’u birden fazla Go paketi için aynı anda kullanabilir miyim?** Tek terminalde sırayla kullanabilirsiniz; paralel çalıştırmak için AgentVera gibi her ajanı ayrı git worktree’de çalıştıran bir ortam daha güvenlidir.

---

**AgentVera hakkında.** AgentVera, Solviera Teknoloji tarafından geliştirilen macOS, Windows ve Linux masaüstü uygulamasıdır. 18 yapay zeka kodlama ajanını (Claude Code, Codex, Gemini CLI, Copilot, Cursor, Antigravity, opencode, Hermes, Qwen Code, Kimi Code, Kiro, Amp, Droid, Goose, Vibe, Crush, Aider, Cline) proje bazında, gerçek terminallerde ve kullanıcının kendi CLI kurulum ve girişleriyle yan yana çalıştırır. Ücretsiz planda sınırsız ajan vardır. İndir: https://agentvera.dev/indir/ · Fiyatlar: https://agentvera.dev/fiyatlar/
