0Pricing
Go Academy · Ders

fmt ve strings Paketleri

Çıktıyı biçimlendirme ve dizeleri işleme

fmt ve strings Paketleri, CoddyKit'te ücretsiz bir Go Academy dersidir. Bu, 4 dersinin 1. 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.

fmt Paketine Genel Bakış

fmt paketi biçimlendirilmiş G/Ç işlemlerini uygular. Temel işlevler:

  • fmt.Print, fmt.Println, fmt.Printf — standart çıktıya yazar
  • fmt.Sprint, fmt.Sprintf, fmt.Sprintln — dizeler döndürür
  • fmt.Fprint, fmt.Fprintf — herhangi bir io.Writer'a yazar
  • fmt.Scan, fmt.Scanf — standart girdiden okur

fmt Biçim Belirteçleri

fmt.Printf için yaygın biçim belirteçleri:

package main
import "fmt"

func main() {
    name := "Gopher"
    age := 15
    score := 98.6

    fmt.Printf("%s is %d years old\n", name, age)
    fmt.Printf("Score: %.1f%%\n", score)
    fmt.Printf("Type: %T, Value: %v\n", age, age)
    fmt.Printf("Hex: %x, Binary: %b\n", 255, 255)
    fmt.Printf("Padded: %10s|%-10s\n", name, name)
}

Dize Oluşturmak İçin fmt.Sprintf

fmt.Sprintf, yazdırmadan biçimlendirilmiş bir dize döndürür; bu nedenle dize oluşturmak için kullanışlıdır:

package main
import "fmt"

func formatUser(name string, age int) string {
    return fmt.Sprintf("User{name: %q, age: %d}", name, age)
}

func main() {
    fmt.Println(formatUser("Alice", 30))
    // User{name: "Alice", age: 30}

    // %q adds quotes; %+v prints struct field names
    type Point struct{X, Y int}
    p := Point{1, 2}
    fmt.Printf("%+v\n", p) // {X:1 Y:2}
}

Hata Biçimlendirmek İçin fmt.Errorf

fmt.Errorf, biçimlendirilmiş hata değerleri oluşturur:

package main
import "fmt"

func getUser(id int) error {
    return fmt.Errorf("getUser(%d): user not found", id)
}

func main() {
    err := getUser(42)
    fmt.Println(err) // getUser(42): user not found

    // Wrap errors with %w for unwrapping:
    base := fmt.Errorf("base error")
    wrapped := fmt.Errorf("context: %w", base)
    fmt.Println(wrapped)
}

strings Paketi: Yaygın İşlevler

strings paketi, dizeleri işlemek için işlevler sağlar:

package main
import ("fmt"; "strings")

func main() {
    s := "  Hello, Go World!  "

    fmt.Println(strings.TrimSpace(s))           // "Hello, Go World!"
    fmt.Println(strings.ToUpper(s))             // "  HELLO, GO WORLD!  "
    fmt.Println(strings.ToLower(s))             // "  hello, go world!  "
    fmt.Println(strings.Contains(s, "Go"))      // true
    fmt.Println(strings.HasPrefix(s, "  Hel")) // true
    fmt.Println(strings.Count(s, "l"))          // 3
}

strings.Split ve strings.Join

strings.Split bir dizeyi böler, strings.Join ise bir dilimi birleştirir:

package main
import ("fmt"; "strings")

func main() {
    csv := "alice,bob,carol,dave"
    names := strings.Split(csv, ",")     // ["alice" "bob" "carol" "dave"]
    fmt.Println(names)

    upper := make([]string, len(names))
    for i, n := range names {
        upper[i] = strings.ToUpper(n)
    }
    result := strings.Join(upper, " | ")
    fmt.Println(result) // ALICE | BOB | CAROL | DAVE
}

strings.Replace ve strings.ReplaceAll

Bir alt dizenin geçtiği yerleri değiştirin:

package main
import ("fmt"; "strings")

func main() {
    s := "foo bar foo baz foo"

    // Replace first 2 occurrences
    fmt.Println(strings.Replace(s, "foo", "XXX", 2))
    // XXX bar XXX baz foo

    // Replace all
    fmt.Println(strings.ReplaceAll(s, "foo", "GO"))
    // GO bar GO baz GO
}

Verimli Birleştirme İçin strings.Builder

Dizeleri verimli biçimde oluşturmak için strings.Builder kullanın; böylece her birleştirme işleminde yeni bir dize için bellek ayrılması önlenir:

package main
import ("fmt"; "strings")

func join(parts []string, sep string) string {
    var sb strings.Builder
    for i, p := range parts {
        if i > 0 { sb.WriteString(sep) }
        sb.WriteString(p)
    }
    return sb.String()
}

func main() {
    fmt.Println(join([]string{"a", "b", "c"}, "-")) // a-b-c
}

strings.NewReader ve strings.Reader

strings.NewReader, bir dizeden io.Reader oluşturur; okuyucu kabul eden işlevleri test etmek için kullanışlıdır:

package main
import ("fmt"; "io"; "strings")

func readAll(r io.Reader) string {
    data, _ := io.ReadAll(r)
    return string(data)
}

func main() {
    r := strings.NewReader("Hello from a string reader")
    fmt.Println(readAll(r))

    // Also: strings.NewReplacer for multiple replacements
    rep := strings.NewReplacer("<", "&lt;", ">", "&gt;")
    fmt.Println(rep.Replace("<b>bold</b>"))
}

strings.Fields ve strings.Map

Yararlı diğer strings işlevleri:

package main
import ("fmt"; "strings")

func main() {
    // Fields splits on any whitespace (like awk)
    words := strings.Fields("  one  two   three  ")
    fmt.Println(words) // [one two three]

    // Map applies a function to each rune
    rot13 := func(r rune) rune {
        if r >= 'a' && r <= 'z' { return 'a' + (r-'a'+13)%26 }
        if r >= 'A' && r <= 'Z' { return 'A' + (r-'A'+13)%26 }
        return r
    }
    fmt.Println(strings.Map(rot13, "Hello, World!"))
}

Kısa Kontrol

Go'da çok sayıda dizeyi verimli biçimde birleştirmek için hangi işlevi kullanmalısınız?

Özet: fmt ve strings

Özet:

  • Biçim belirteçleriyle (%s %d %f %v %T %q) biçimlendirilmiş çıktı/dizeler için fmt.Printf/Sprintf
  • Biçimlendirilmiş hatalar için fmt.Errorf, sarmalamak için %w
  • strings.Split/Join, Contains, Replace, TrimSpace, ToUpper/Lower
  • Verimli birleştirme için strings.Builder
  • Bir dizeyi io.Reader olarak kullanmak için strings.NewReader

Sıkça Sorulan Sorular

“fmt ve strings Paketleri” dersi ücretsiz mi?

Evet — “fmt ve strings Paketleri” 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.

“fmt ve strings Paketleri” dersinde ne öğreneceğim?

Çıktıyı biçimlendirme ve dizeleri işleme 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 1. dersidir.

“fmt ve strings Paketleri” 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. fmt ve strings Paketleri
  2. strconv, math ve sort
  3. time Paketinin Temelleri
  4. os ve filepath Paketleri
← Go Academy Sayfasına Dön