Externe Dateien
Teil des Abschnitts Objektorientierte Programmierung der GO-Journey von Coddy — Lektion 1 von 107.
In Go können Sie Ihren Code auf mehrere .go-Dateien innerhalb desselben Pakets aufteilen. Alle Dateien, die dieselbe package-Deklaration teilen, können direkt auf die Funktionen und Typen der jeweils anderen zugreifen – kein Import erforderlich.
// helper.go
package main
func Add(a, b int) int {
return a + b
}Verwenden Sie die Funktion in einer anderen Datei desselben Pakets
// main.go
package main
import "fmt"
func main() {
result := Add(3, 5)
fmt.Println(result) // Ausgabe: 8
}Beide Dateien deklarieren package main, daher ist Add in main.go ohne Import verfügbar. Dies ermöglicht es Ihnen, Code in logischen Dateien zu organisieren, während sie im selben Paket bleiben.
Aufgabe
EinfachErstellen Sie zwei Funktionen in helper.go, die von main.go verwendet werden:
Add— nimmt zweiint-Parameter entgegen und gibt deren Summe zurückSubtract— nimmt zweiint-Parameter entgegen und gibt deren Differenz zurück
Spickzettel
Sie können Ihren Code auf mehrere .go-Dateien innerhalb desselben Pakets aufteilen. Alle Dateien, die dieselbe package-Deklaration teilen, können direkt auf die Funktionen und Typen der jeweils anderen zugreifen, ohne diese zu importieren.
// helper.go
package main
func Add(a, b int) int {
return a + b
}// main.go
package main
import "fmt"
func main() {
result := Add(3, 5)
fmt.Println(result) // Ausgabe: 8
}Beide Dateien deklarieren package main, daher sind in einer Datei definierte Funktionen in der anderen ohne Import-Anweisung verfügbar.
Probier es selbst
package main
import "fmt"
func main() {
var a, b int
fmt.Scan(&a, &b)
fmt.Printf("Sum: %d\n", Add(a, b))
fmt.Printf("Difference: %d\n", Subtract(a, b))
}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 Go OOP
Externe DateienGo Workspace & ModulePackages & ImportsExportierte vs. nicht-exportierte NamenEinführung in OOP in GoStructs als KlassenMethoden für Structs definierenPointer- vs. Value-ReceiverStruct-InitialisierungKonstruktor-FunktionenZusammenfassung – Einfacher Taschenrechner4Interfaces
Einführung in InterfacesImplizite ImplementierungInterface als VertragLeeres Interface (any)Type AssertionType SwitchInterface-KompositionStringer & Error InterfacesRückblick - Formen-Rechner7Kapselung
Exportierte vs. nicht exportierte FelderKapselung auf Paket-EbeneGetter- & Setter-MethodenInformation Hiding in GoZusammenfassung - Studierendendatensätze10Generics (Go 1.18+)
Einführung in GenericsTypparameterType ConstraintsGenerische StructsWorkaround für generische MethodenZusammenfassung – Generische Collection2Vertiefung: Typen & Structs
Basis- & zusammengesetzte TypenBenutzerdefinierte TypdefinitionenStruct TagsAnonyme StructsVerschachtelte StructsZero Values & StandardwerteZusammenfassung - Kontaktbuch5Komposition statt Vererbung
Warum Go keine Vererbung hatGrundlagen des Struct EmbeddingMethod PromotionEinbetten mehrerer StructsEmbedding vs. AggregationShadowing eingebetteter MethodenZusammenfassung – Mitarbeiter-Hierarchie8Fehlerbehandlung & OOP
Das error-InterfaceEigene FehlertypenError Wrapping (fmt.Errorf)Sentinel-Fehlererrors.Is() und errors.As()Panic, Defer und RecoverZusammenfassung – Datei-Parser3Zeiger & Speicher
Zeiger-Grundlagen in GoZeiger auf StructsWertübergabe vs. ReferenzübergabeDie new() FunktionGarbage Collection in GoWiederholung – Linked List Builder6Polymorphismus in Go
Polymorphismus über InterfacesDuck Typing in GoInterface-ErfüllungsregelnPolymorphe CollectionsDependency InjectionZusammenfassung – Payment Processor9Nebenläufigkeit & OOP
Goroutines GrundlagenChannels & KommunikationGepufferte vs. ungepufferte ChannelsSelect-Anweisungsync.Mutex & sync.RWMutexsync.WaitGroupThread-sicheres Struct-DesignZusammenfassung - Worker Pool