Nach der unglaublichen Erfahrung, die ich mit Leuten aus Mattermost während des Hacktoberfests gemacht habe (vergessen Sie auch ihr aufmerksames Geschenk nicht!), habe ich beschlossen, im November noch einmal mit ihnen zu gehen.
Diesmal „gehen“ wir buchstäblich mit ihnen, da ihr Server in Go geschrieben ist (ich entschuldige mich für meinen verletzenden Sinn für Humor). Während des Hacktoberfests habe ich an ihrer mobilen App gearbeitet, die in TypeScript mit React Native geschrieben ist. Das Problem, das ich dieses Mal hatte, hing jedoch mit ihrem Server zusammen und es war das erste Mal, dass ich an einem Go-Projekt arbeitete.
Gehen
Da ich keinerlei Vorkenntnisse in Go hatte, traf ich die richtige Entscheidung, es zuerst zu lernen. Glücklicherweise war Go super einfach in die Hände zu bekommen. Ich war wirklich erstaunt über die Einfachheit und die Möglichkeit, schnelle und zuverlässige Software zu erstellen. Ein einstündiges Video war alles, was ich brauchte, um die Grundlagen zu verstehen, und ich musste viel weniger innehalten als damals, als ich Rust lernte ?.
Zuerst möchte ich etwas Zeit damit verbringen, diesen entzückend albernen Gopher zu würdigen:
Davon abgesehen gefällt mir, dass Go statisch und stark getippt ist. Das habe ich kürzlich mit einem Freund besprochen: Statische und/oder stark typisierte Sprachen erfordern nur ein wenig mehr Gedanken über das Codedesign, können aber ein großes Maß an Mehrdeutigkeit beseitigen. Außerdem kann der Go-Compiler, ähnlich wie Rust, nach Möglichkeit Typen ableiten, was die zusätzlichen Gedanken noch trivialer macht.
Manche Leute nennen Go „das moderne C“. Jetzt verstehe ich, warum: Es funktioniert wirklich gut und ist so einfach wie C. Es unterstützt Low-Level-Operationen mithilfe von Zeigern. Aber im Gegensatz zu C verfügt es über die Funktionen, die Sie von einer modernen Sprache erwarten würden, wie Schnittstellen, Slices, Karten usw. Eine weitere faszinierende Funktion ist Goroutine, ein einzigartig einfaches Modell für die Verarbeitung paralleler Ausführungen.
Das wichtigste Thema
Es stellte sich heraus, dass ich es wirklich übertrieben habe, Go zu lernen, da es sich um ein wirklich einfaches Problem handelte. Ich musste lediglich die Fehlerbehandlung in einer einzigen Datei implementieren.
In der Ausgabe wird praktischerweise darauf hingewiesen, dass Fehler entweder zurückgegeben oder protokolliert werden sollen. Da ich die Entwicklerdokumente von Mattermost gut kannte, fand ich schnell den Abschnitt über die Fehlerbehandlung.
Das einzige Hindernis, auf das ich stieß, war die Entscheidung, welche Protokollstufe verwendet werden sollte. Obwohl es in den Dokumenten erwähnt wurde, fand ich die Definition immer noch mehrdeutig. Nach einer kurzen Suche innerhalb des Projekts wurde mir jedoch klar, dass diese Funktionen an anderen Stellen immer den gleichen Log-Level verwenden. Das hat meine Zweifel beseitigt.
Da die Funktionen, an denen ich gearbeitet habe, statische HTML-Seiten bereitstellen, habe ich auch dafür gesorgt, dass ein korrekter HTTP-Fehlercode zurückgegeben wird, wenn ein Fehler auftritt, etwa so:
http.Error(w, err.Error(), http.StatusInternalServerError)
Das ist die ganze Arbeit! Ich habe die PR eingereicht und war anfangs etwas besorgt, da ich zum ersten Mal mit Go zusammengearbeitet habe, aber es hat alles gut geklappt. Die PR wurde kurz nach einer kleinen Korrektur zusammengeführt.
Abschluss
Alles in allem war es ein unterhaltsames und leicht zu bearbeitendes Thema. Ich bin froh, dass ich mich dafür entschieden habe, auch wenn es nicht so herausfordernd war wie einige andere Themen, an denen ich gearbeitet habe. Ich freue mich immer, eine neue Sprache zu lernen, und das war die perfekte Ausrede dafür! Und es war irgendwie großartig, es sofort nutzen zu können.
Das obige ist der detaillierte Inhalt vonGehen Sie mit Mattermost!. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

GoisastrongchoiceForProjectSeNeedingImplication, Leistung und Konkurrenz, ButitmaylackinadvancedFeatures undcosystemmaturity.1) Go'SSYNTAXISMPEANDEALEDELTOLEARN, FEHTTOFEWERBUGSANDMOREMINTAINABLECODE, obwohl es sich

Go'Sinitfunctionandjava'SstaticInitializersBothServetosetupenvironmentBeforethemaNfunction, Buttheydifferinexexcution undControl

ThecommonusecasesFortheinitfunctioningoare: 1) LadekonfigurationsfiguresbeforethemaProgramstarts, 2) Initialisierungsglobalvariablen und 3) RunningPre-ChecksorvalidationsBeforTheProgramProcececececeers.

ChannelsarecrucialingoforenablingsAfeAnDefficienceCommunicationBetweengoroutines.TheyfacilitateSynchronizationAndManageGoroutinElifecycle, EssentialforcurrentProgramming.ChannelsallowsendingandReceive -Values, ActaStarnalsforsynchronisierungen und Subors

In Go können Fehler verpackt und ein Kontext über Fehler hinzugefügt werden. 1) Mit der neuen Funktion des Fehlerpakets können Sie während der Fehlerausbreitung Kontextinformationen hinzufügen. 2) Helfen Sie dabei, das Problem zu lokalisieren, indem Sie Fehler über FMT.Errorf und %W einwickeln. 3) Benutzerdefinierte Fehlertypen können mehr semantische Fehler erzeugen und die ausdrucksstarke Fähigkeit der Fehlerbehandlung verbessern.

GooffersrobustFeaturesForsecurecoding, butdeveloperMustimplementsCurityBestPracticeSeffective.1) UseGo'ScryptopackageForScedatahandling.2) ManageConcurrencywithsynchronizationPrimitivestopreventraceconcitions.3) Sanitendien.3) HANNISITEPERCEEPERCEEPERCEEPERSCEEDEEXTERSEXTERSUCHE

Die Fehlerschnittstelle von GO ist als TypeErrorInterface {error () String} definiert, sodass jeder Typ, der die Fehler (ERROR () -Methode implementiert, als Fehler angesehen werden kann. Die Verwendung für die Verwendung sind wie folgt: 1. Überprüfen Sie im Grunde genommen Fehler und Protokollfehler, wie z. 2. Erstellen Sie einen benutzerdefinierten Fehlertyp, um weitere Informationen bereitzustellen, z. 3. Verwenden Sie Fehlerverpackungen (seit Go1.13), um den Kontext hinzuzufügen, ohne die ursprüngliche Fehlermeldung zu verlieren.

TOEFFEKTIVE HANDLEERSINCONCURENTGOPROGRAMMEN, UsechannelstocommunicateErrors, ImplementErrorWatchers, Considertimeouts, UseBiftedChannels und ProvideClearErrormessages.1) Usechannelstopassirrorsfromgoroutinestothänenfunktion.2) ImplementanerErrorWesser


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

SecLists
SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.

mPDF
mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),

WebStorm-Mac-Version
Nützliche JavaScript-Entwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung
