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 yazarfmt.Sprint,fmt.Sprintf,fmt.Sprintln— dizeler döndürürfmt.Fprint,fmt.Fprintf— herhangi bir io.Writer'a yazarfmt.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("<", "<", ">", ">")
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çinfmt.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.Readerolarak kullanmak içinstrings.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
- fmt ve strings Paketleri
- strconv, math ve sort
- time Paketinin Temelleri
- os ve filepath Paketleri