strconv, math ve sort
Tür dönüşümü, matematik yardımcıları ve sıralama
strconv, math ve sort, CoddyKit'te ücretsiz bir Go Academy dersidir. Bu, 4 dersinin 2. 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.
strconv: Dize Dönüşümleri
strconv paketi, dizeler ile temel türler arasında dönüşüm yapar:
package main
import ("fmt"; "strconv")
func main() {
// String to int
n, err := strconv.Atoi("42")
fmt.Println(n, err) // 42 <nil>
// Int to string
s := strconv.Itoa(123)
fmt.Println(s) // "123"
// String to float64
f, _ := strconv.ParseFloat("3.14", 64)
fmt.Println(f) // 3.14
// Float64 to string
fs := strconv.FormatFloat(f, 'f', 2, 64)
fmt.Println(fs) // "3.14"
}strconv.ParseInt ve ParseBool
Tam sayıları tabanıyla ve bool değerlerini ayrıştırın:
package main
import ("fmt"; "strconv")
func main() {
// Parse int with base
n, _ := strconv.ParseInt("FF", 16, 64) // hex
fmt.Println(n) // 255
n2, _ := strconv.ParseInt("11111111", 2, 64) // binary
fmt.Println(n2) // 255
// Bool parsing
b1, _ := strconv.ParseBool("true")
b2, _ := strconv.ParseBool("1")
b3, _ := strconv.ParseBool("T")
fmt.Println(b1, b2, b3) // true true true
}strconv Hata İşleme
strconv hatalarını her zaman işleyin; geçersiz girdi, *strconv.NumError ile sarmalanmış bir hata döndürür:
package main
import ("fmt"; "strconv")
func safeAtoi(s string) (int, error) {
n, err := strconv.Atoi(s)
if err != nil {
return 0, fmt.Errorf("invalid integer %q: %w", s, err)
}
return n, nil
}
func main() {
n, err := safeAtoi("abc")
fmt.Println(n, err)
// 0 invalid integer "abc": strconv.Atoi: ...
}math Paketinin Temel Özellikleri
math paketi matematiksel sabitler ve işlevler sağlar:
package main
import ("fmt"; "math")
func main() {
fmt.Println(math.Pi) // 3.141592653589793
fmt.Println(math.E) // 2.718281828459045
fmt.Println(math.Sqrt(16)) // 4
fmt.Println(math.Pow(2, 10)) // 1024
fmt.Println(math.Abs(-5.5)) // 5.5
fmt.Println(math.Floor(3.7)) // 3
fmt.Println(math.Ceil(3.2)) // 4
fmt.Println(math.Round(3.5)) // 4
fmt.Println(math.Log(math.E)) // 1
fmt.Println(math.Log2(8)) // 3
}math.MaxInt ve Kayan Nokta Sınırları
Tam sayı ve kayan nokta sınırları için math sabitlerini kullanın:
package main
import ("fmt"; "math")
func main() {
fmt.Println(math.MaxInt) // max int (platform-dependent)
fmt.Println(math.MinInt) // min int
fmt.Println(math.MaxInt32) // 2147483647
fmt.Println(math.MaxFloat64) // 1.7976931348623157e+308
fmt.Println(math.SmallestNonzeroFloat64)
fmt.Println(math.IsInf(math.Inf(1), 1)) // true
fmt.Println(math.IsNaN(math.NaN())) // true
}math/rand — Rastgele Sayılar
math/rand ile rastgele sayılar oluşturun (Go 1.20 ve sonrasında başlangıç değeri otomatik olarak belirlenir):
package main
import ("fmt"; "math/rand")
func main() {
// Go 1.20+: automatically seeded
fmt.Println(rand.Intn(100)) // random 0-99
fmt.Println(rand.Float64()) // random [0.0, 1.0)
// Shuffle a slice
s := []int{1, 2, 3, 4, 5}
rand.Shuffle(len(s), func(i, j int) {
s[i], s[j] = s[j], s[i]
})
fmt.Println(s)
}sort.Slice — Hızlı Özel Sıralama
sort.Slice kullanarak özel bir karşılaştırıcıyla herhangi bir dilimi sıralayın:
package main
import ("fmt"; "sort")
func main() {
people := []struct{ Name string; Age int }{
{"Alice", 30}, {"Bob", 25}, {"Carol", 35},
}
// Sort by age ascending
sort.Slice(people, func(i, j int) bool {
return people[i].Age < people[j].Age
})
fmt.Println(people)
// [{Bob 25} {Alice 30} {Carol 35}]
}sort.Strings, sort.Ints, sort.Float64s
Yaygın dilim türleri için yerleşik sıralama işlevleri:
package main
import ("fmt"; "sort")
func main() {
strs := []string{"banana", "apple", "cherry"}
sort.Strings(strs)
fmt.Println(strs) // [apple banana cherry]
nums := []int{5, 2, 8, 1, 9, 3}
sort.Ints(nums)
fmt.Println(nums) // [1 2 3 5 8 9]
// Check if already sorted:
fmt.Println(sort.IntsAreSorted(nums)) // true
}sort.Search — İkili Arama
sort.Search, sıralanmış bir dilim üzerinde ikili arama gerçekleştirir:
package main
import ("fmt"; "sort")
func main() {
nums := []int{1, 3, 5, 7, 9, 11, 13}
target := 7
i := sort.Search(len(nums), func(i int) bool {
return nums[i] >= target
})
if i < len(nums) && nums[i] == target {
fmt.Printf("Found %d at index %d\n", target, i) // Found 7 at index 3
}
}slices Paketi (Go 1.21 ve sonrası)
Go 1.21, genel amaçlı sıralama ve arama işlevleri içeren slices paketini ekledi:
package main
import ("fmt"; "slices")
func main() {
nums := []int{5, 2, 8, 1}
slices.Sort(nums) // in-place sort
fmt.Println(nums) // [1 2 5 8]
strs := []string{"c", "a", "b"}
slices.Sort(strs)
fmt.Println(strs) // [a b c]
idx, found := slices.BinarySearch(nums, 5)
fmt.Println(idx, found) // 2 true
}Kısa Kontrol
Go'da bir tam sayıyı dize gösterimine dönüştüren işlev hangisidir?
Özet: strconv, math, sort
Özet:
strconv.Atoi/Itoa,ParseFloat/FormatFloat, dönüşümler içinParseBool- Matematik işlemleri için
math.Sqrt/Pow/Abs/Floor/Ceil/Round - Tür sınırları için
math.MaxInt/MaxFloat64 - Özel sıralama için
sort.Slice, temel türler içinsort.Strings/Ints - İkili arama için
sort.Search - Jenerik alternatifler için
slicespaketi (Go 1.21 ve sonrası)
Sıkça Sorulan Sorular
“strconv, math ve sort” dersi ücretsiz mi?
Evet — “strconv, math ve sort” 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.
“strconv, math ve sort” dersinde ne öğreneceğim?
Tür dönüşümü, matematik yardımcıları ve sıralama 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 2. dersidir.
“strconv, math ve sort” 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