Packages & Imports
Teil des Abschnitts Objektorientierte Programmierung der GO-Journey von Coddy. Lektion 3 von 107.
Jede Go-Datei beginnt mit einer package-Deklaration. Das Schlüsselwort import bindet Pakete aus der Standardbibliothek von Go ein, damit du deren Funktionen verwenden kannst.
Ein einzelnes Paket importieren
import "fmt"Mehrere Pakete mithilfe eines Importblocks importieren
import (
"fmt"
"math"
"strings"
)Verwende Funktionen aus importierten Paketen mit dem Paketnamen als Präfix
package main
import (
"fmt"
"strings"
"math"
)
func main() {
upper := strings.ToUpper("hello")
fmt.Println(upper) // Ausgabe: HELLO
root := math.Sqrt(16)
fmt.Println(root) // Ausgabe: 4
}Häufig verwendete Pakete der Standardbibliothek
"fmt" // Formatierte Ein-/Ausgabe (Print, Scan, Sprintf)
"strings" // String-Manipulation (ToUpper, Contains, Replace)
"math" // Mathematische Funktionen (Sqrt, Pow, Pi)
"strconv" // String-Konvertierungen (Itoa, Atoi)Du greifst auf Funktionen aus einem Paket mit packagename.FunctionName zu. Go erlaubt dir nur, Pakete zu importieren, die du tatsächlich verwendest: Nicht verwendete Importe führen zu einem Kompilierungsfehler.
Aufgabe
MittelKorrigiere die Importanweisung in utils.go, damit die Funktionen korrekt funktionieren. Du musst die Pakete strings und math importieren:
FormatTextverwendetstrings.ToUpperContainsWordverwendetstrings.ContainsSquareRootverwendetmath.Sqrt
Probier es selbst
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
func main() {
scanner := bufio.NewScanner(os.Stdin)
scanner.Scan()
line := scanner.Text()
parts := strings.Fields(line)
numStr := parts[len(parts)-1]
text := strings.Join(parts[:len(parts)-1], " ")
num, _ := strconv.ParseFloat(numStr, 64)
fmt.Printf("Upper: %s\n", FormatText(text))
fmt.Printf("Contains 'world': %t\n", ContainsWord(text, "world"))
fmt.Printf("Sqrt: %.2f\n", SquareRoot(num))
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Objektorientierte Programmierung
1Grundlagen der OOP in Go
Externe DateienGo-Workspace & ModulePackages & ImportsExportierte vs. nicht exportierte NamenEinführung in OOP mit GoStructs als KlassenMethoden für Structs definierenPointer- vs. Value-ReceiverStruct-InitialisierungKonstruktorfunktionenRückblick – Einfacher Taschenrechner4Schnittstellen
Einführung in SchnittstellenImplizite ImplementierungSchnittstelle als VertragLeere Schnittstelle (any)TypzusicherungTypwechselZusammensetzung von SchnittstellenStringer- und Error-SchnittstellenRückblick – Formenrechner7Kapselung
Exportierte vs. nicht exportierte FelderKapselung auf PaketebeneGetter- und Setter-MethodenInformationsverbergung in GoRückblick – Studierendendatensätze10Generics (Go 1.18+)
Einführung in GenericsTypparameterTypbeschränkungenGenerische StrukturenWorkaround für generische MethodenZusammenfassung – Generische Sammlung2Typen & Structs im Detail
Grundlegende & zusammengesetzte TypenBenutzerdefinierte TypdefinitionenStruct-TagsAnonyme StructsVerschachtelte StructsNullwerte & StandardwerteRückblick – Kontaktbuch5Komposition statt Vererbung
Warum Go keine Vererbung hatGrundlagen der Struct-EinbettungMethoden-PromotionMehrere Structs einbettenEinbettung vs. AggregationVerbergen eingebetteter MethodenRückblick – Mitarbeiterhierarchie8Fehlerbehandlung & OOP
Das Error-InterfaceBenutzerdefinierte FehlertypenError-Wrapping (fmt.Errorf)Sentinel-Fehlererrors.Is() und errors.As()Panic, Defer und RecoverRückblick – Dateiparser3Zeiger & Speicher
Grundlagen von Zeigern in GoZeiger auf StructsÜbergabe per Wert vs. ReferenzDie Funktion new()Garbage Collection in GoRückblick – Verkettete Liste erstellen6Polymorphismus in Go
Polymorphismus über InterfacesDuck-Typing in GoRegeln zur Interface-ErfüllungPolymorphe SammlungenDependency InjectionZusammenfassung – Zahlungsprozessor9Konkurrenz & OOP
Grundlagen der GoroutinesChannels & KommunikationGepufferte vs. ungepufferte ChannelsSelect-Anweisungsync.Mutex & sync.RWMutexsync.WaitGroupThread-sicheres Struct-DesignRückblick – Worker PoolÜbe selbstständig: Online-Go-Compiler