0Pricing
Go Academy · Ders

strings.Builder

Dizeleri verimli şekilde oluşturun

strings.Builder, CoddyKit'te ücretsiz bir Go Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Go Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Go Academy kursu toplamda 4 dersten oluşur.

+ Birleştirmenin Maliyeti

Dizeler değiştirilemez olduğundan, her s = s + part işlemi yepyeni bir dize oluşturur ve tüm baytları yeniden kopyalar.

Bu durum bir döngüde yavaşlamaya ve bellek israfına yol açar.

package main

import "fmt"

func main() {
    s := ""
    for i := 0; i < 3; i++ {
        s = s + "go "
    }
    fmt.Println(s)
}

strings.Builder ile Tanışın

strings.Builder, dahili bir arabellek büyütür ve tekrarlanan kopyalama işlemlerinden kaçınır. Bu arabelleğe yazarsınız, ardından sonucu yalnızca sonunda okursunuz.

var b strings.Builder ile bir tane bildirin.

package main

import (
    "fmt"
    "strings"
)

func main() {
    var b strings.Builder
    b.WriteString("Hello")
    fmt.Println(b.String())
}

Döngüde WriteString

Asıl kazanç döngülerde ortaya çıkar. WriteString işlevini art arda çağırın, ardından String() ile sonucu bir kez okuyun.

package main

import (
    "fmt"
    "strings"
)

func main() {
    var b strings.Builder
    for i := 0; i < 3; i++ {
        b.WriteString("go ")
    }
    fmt.Println(b.String())
}

Baytları ve Runeları Yazma

Bir Builder yalnızca tam dizeleri kabul etmez:

  • WriteByte tek bir bayt ekler.
  • WriteRune tek bir Unicode kod noktası ekler.
package main

import (
    "fmt"
    "strings"
)

func main() {
    var b strings.Builder
    b.WriteString("Go")
    b.WriteByte('!')
    b.WriteRune('語')
    fmt.Println(b.String())
}

Builder, io.Writer'ı Uygular

Builder, io.Writer arayüzünü uyguladığı için biçimlendirmeyi doğrudan arabelleğe yapmak üzere fmt.Fprintf ile kullanabilirsiniz.

package main

import (
    "fmt"
    "strings"
)

func main() {
    var b strings.Builder
    fmt.Fprintf(&b, "x=%d y=%d", 3, 4)
    fmt.Println(b.String())
}

Uzunluğu İzleme

b.Len(), son dizeyi oluşturmadan şimdiye kadar yazılmış bayt sayısını bildirir.

package main

import (
    "fmt"
    "strings"
)

func main() {
    var b strings.Builder
    b.WriteString("hello")
    fmt.Println(b.Len())
}

Grow ile Önceden Ayırma

Sonucun yaklaşık olarak ne kadar büyük olacağını biliyorsanız önce b.Grow(n) çağırın. Bu, kapasite ayırarak arabelleğin tekrar tekrar yeniden boyutlandırılmasını önler.

package main

import (
    "fmt"
    "strings"
)

func main() {
    var b strings.Builder
    b.Grow(64)
    for i := 0; i < 5; i++ {
        b.WriteString("item ")
    }
    fmt.Println(b.String())
}

Builder'ı Sıfırlama

b.Reset(), arabelleği boşaltır; böylece aynı Builder'ı sonraki dize için yeniden kullanabilirsiniz.

package main

import (
    "fmt"
    "strings"
)

func main() {
    var b strings.Builder
    b.WriteString("first")
    b.Reset()
    b.WriteString("second")
    fmt.Println(b.String())
}

Builder'ı Kopyalamayın

Bir strings.Builder, ilk kullanımdan sonra kopyalanmamalıdır. Bunun yerine onu bir işaretçi (*strings.Builder) kullanarak aktarın.

package main

import (
    "fmt"
    "strings"
)

func add(b *strings.Builder, word string) {
    b.WriteString(word)
}

func main() {
    var b strings.Builder
    add(&b, "shared ")
    add(&b, "builder")
    fmt.Println(b.String())
}

CSV Satırı Oluşturma

Pratik bir örnek: Builder ile virgülle ayrılmış bir satırı verimli biçimde oluşturun.

package main

import (
    "fmt"
    "strings"
)

func main() {
    fields := []string{"id", "name", "age"}
    var b strings.Builder
    for i, f := range fields {
        if i > 0 {
            b.WriteByte(',')
        }
        b.WriteString(f)
    }
    fmt.Println(b.String())
}

Builder Ne Zaman Kullanılmalı

Özellikle döngülerin içinde çok sayıda parçayı birleştirirken strings.Builder kullanın.

Bilinen bir dilimi tek seferde birleştirmek için strings.Join daha basittir ve aynı hızdadır.

package main

import (
    "fmt"
    "strings"
)

func main() {
    var b strings.Builder
    for i := 1; i <= 3; i++ {
        fmt.Fprintf(&b, "[%d]", i)
    }
    fmt.Println(b.String())
}

Kısa kontrol

Döngüde tekrarlanan + işlemleri yerine Builder neden tercih edilmelidir?

Özet: strings.Builder

Dizeleri verimli biçimde oluşturmayı öğrendiniz:

  • var b strings.Builder ile bildirin.
  • WriteString, WriteByte, WriteRune veya fmt.Fprintf ile ekleme yapın.
  • İsteğe bağlı olarak önceden Grow çağırın, String() ile sonucu bir kez okuyun ve Builder'ı asla kopyalamayın.
package main

import (
    "fmt"
    "strings"
)

func main() {
    var b strings.Builder
    b.Grow(16)
    b.WriteString("Go ")
    b.WriteString("builder!")
    fmt.Println(b.String())
}

Sıkça Sorulan Sorular

“strings.Builder” dersi ücretsiz mi?

Evet — “strings.Builder” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Go Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Go Academy kursu toplamda 4 dersten oluşur.

“strings.Builder” dersinde ne öğreneceğim?

Dizeleri verimli şekilde oluşturun Go Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Go Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Go Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“strings.Builder” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Go Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Go Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Runeler ve Baytlar
  2. strings Paketi İşlevleri
  3. strings.Builder
  4. Unicode ve utf8
← Go Academy Sayfasına Dön