strconv, math und sort
Typkonvertierung, mathematische Hilfsfunktionen und Sortierung
strconv, math und sort ist eine kostenlose Go Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Go Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Go Academy-Kurs umfasst insgesamt 4 Lektionen.
strconv: String-Konvertierungen
Das strconv-Package konvertiert zwischen Strings und grundlegenden Datentypen:
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 und ParseBool
Ganze Zahlen mit einer Basis und boolesche Werte parsen:
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
}Fehlerbehandlung bei strconv
Behandeln Sie strconv-Fehler immer — bei ungültigen Eingaben wird ein Fehler zurückgegeben, der in *strconv.NumError verpackt ist:
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: ...
}Grundlagen des math-Packages
Das math-Package stellt mathematische Konstanten und Funktionen bereit:
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 und Grenzen für Gleitkommazahlen
Verwenden Sie die Konstanten aus math für die Grenzen von Integern und Gleitkommazahlen:
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 — Zufallszahlen
Generieren Sie Zufallszahlen mit math/rand (ab Go 1.20 automatisch mit einem Zufallswert initialisiert):
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 — Schnelles benutzerdefiniertes Sortieren
Sortieren Sie jeden Slice mit einem benutzerdefinierten Vergleich über sort.Slice:
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
Integrierte Sortierfunktionen für gängige Slice-Typen:
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 — Binäre Suche
sort.Search führt eine binäre Suche in einem sortierten Slice durch:
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-Package (Go 1.21+)
Go 1.21 hat das slices-Package mit generischen Sortier- und Suchfunktionen eingeführt:
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
}Wissenscheck
Welche Funktion konvertiert in Go eine Ganzzahl in ihre String-Darstellung?
Zusammenfassung: strconv, math, sort
Zusammenfassung:
strconv.Atoi/Itoa,ParseFloat/FormatFloat,ParseBoolfür Konvertierungenmath.Sqrt/Pow/Abs/Floor/Ceil/Roundfür mathematische Berechnungenmath.MaxInt/MaxFloat64für Typgrenzensort.Slicefür benutzerdefiniertes Sortieren,sort.Strings/Intsfür primitive Typensort.Searchfür die binäre Suche- Paket
slices(Go 1.21+) als generische Alternative
Häufig gestellte Fragen
Ist die Lektion „strconv, math und sort“ kostenlos?
Ja — der vollständige Text von „strconv, math und sort“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Go Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Go Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „strconv, math und sort“?
Typkonvertierung, mathematische Hilfsfunktionen und Sortierung Du übst Go Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Go Academy zu starten?
Keine Vorkenntnisse erforderlich. Go Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „strconv, math und sort“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Go Academy-Lektion Code schreiben und ausführen?
Ja. Jede Go Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Die Packages fmt und strings
- strconv, math und sort
- Grundlagen des time-Packages
- Die Packages os und filepath