Go – Das Praxisbuch

Einstieg in Go und das Go-Ökosystem

Andreas Schröpfer

Cite this publication as

Andreas Schröpfer, Go – Das Praxisbuch (2020), dpunkt.verlag, Heidelberg, ISBN: 9783960888482

2381
accesses
29
quotes

Descripción / Abstract

Ihr Einstieg in Go


Einführung in Go und das Go Tooling
Fokus auf Codequalität und Testing
praktischer Einstieg mit Übungsaufgaben und Beispielprojekten (inkl. GitHub Repository)


Sie haben schon Erfahrung mit objektorientierten Programmiersprachen und wollen sich jetzt Googles Programmiersprache Go genauer ansehen? Dann ist dieses Buch genau das Richtige für Sie! Denn Sie steigen direkt in die Besonderheiten von Go ein und lernen das Ökosystem rund um Tools und Testing kennen. Dabei liegt stets ein Fokus auf der Codequalität, damit Ihr Code von Anfang an den gängigen Code-Konventionen der Go-Community entspricht. Das alles lernen sie nicht nur mit grauer Theorie, sondern direkt an der Tatstatur mit Übungsaufgaben und Beispielprojekten.

Descripción

Andreas Schröpfer ist seit über zehn Jahren in der IT-Beratung tätig und seit 2015 begeisterter Gopher. Er ist Contributor bei mehreren Open-Source-Projekten; darunter Go Buffalo. Er gibt Workshops zu Go, ist Mentor bei excercism.io und unterrichtet auch auf Udemy.

Índice

  • BEGINN
  • Vorwort
  • Einleitung
  • Ziel dieses Buches
  • Die Geschichte von Go
  • Installation
  • Sicherheit und Patches
  • Editoren für den Go-Werkzeugkasten
  • Der Spielplatz für Gopher
  • Hello World
  • Eine lesbare technische Spezifikation
  • Ausgabe mit dem fmt-Paket
  • Vorstellung der Syntax
  • Wörter, Funktionen und Typen von Go
  • Variablen
  • Konstanten
  • Pointer
  • Eigene Typen
  • Typumwandlung
  • Zusammengesetzte Strukturen
  • Funktionen
  • Objektorientierung mit Methode
  • Exportiert und nicht exportiert
  • Arrays
  • Slices
  • Das Slice als Pointer
  • Maps
  • if
  • switch
  • for
  • Labels und goto
  • Blank Identifier
  • UTF-8, strings und runes
  • Projekt: Command Line Interface
  • Einleitung
  • gocat - File-Ausgabe
  • Den md5-Hash erzeugen
  • Dateien und HTTP-Server als Quellen für gomd5
  • Go Tooling
  • Schnelle Hilfe mit go help
  • Kompilieren und Installieren
  • Umgebungsvariablen mit go env
  • Ein Programm für jede Gelegenheit - Build Tags
  • Wie Code formatiert wird - gofmt
  • Automatische Imports mit goimports
  • Dokumentation immer dabei - godoc
  • Projekt: Ein einfacher Webloader
  • Einleitung
  • CLI - unser Interface
  • HTTP-Request erstellen
  • Implementierung des File-Outputs
  • Ausgabe des HTTP-Headers
  • Gültigkeit der übergebenen URL
  • Eigene Pakete und Module
  • Go-Code lebt in Paketen
  • Paketnamen
  • Die init()-Funktion
  • Semantic Versioning
  • Pakete leben in Modulen
  • Der Workflow, seit es Module gibt
  • Neuer bedeutet nicht immer besser
  • Update unserer Abhängigkeit
  • Neue Major-Version mit Modulen
  • Projekt: Code generieren
  • Einleitung
  • Ein Tool, um Code zu generieren
  • Template erstellen
  • Anwenden von go generate
  • Concurrency-Grundlagen
  • Concurrency mit Go
  • Parallelität im echten Leben
  • Goroutinen
  • Channels
  • Einen Channel schließen
  • Select
  • Race Conditions und Data Races
  • Concurrency Patterns
  • Checkliste zu Goroutinen
  • Goroutinen melden, wenn sie fertig sind
  • Beenden von Goroutinen
  • Context
  • Prüfung eines geschlossenen Channels
  • Pipelines
  • Generator
  • Fan-In und Fan-Out
  • Channel of Channels
  • Worker Pool
  • Semaphore mit einem Buffered Channel
  • State Machine
  • Projekt: Go Concurrency
  • Einleitung
  • Command Line Interface
  • Argumente parsen
  • Befehle ausführen
  • Abbruch mit context
  • Verbesserung des Tools
  • Testen und Benchmarks
  • Tests in Go
  • Subtests
  • Tabellarische Tests
  • Eigenes Testpaket
  • Testen mit Beispielen
  • Ein ganzes Projekt testen
  • Benchmarks
  • Syntax der Benchmarks
  • Subbenchmarks
  • Projekt: Image Resizer
  • Einleitung
  • Command Line Interface - Erstellen der Flags
  • Größe erzeugen
  • Bild verkleinern
  • Filename prüfen
  • Funktionen zusammenführen
  • Refactoring in eine zusätzliche Funktion
  • Eigener Fehlertyp
  • Von sequentieller Ausführung zu nebenläufiger Ausführung
  • Interfaces
  • Bessere Abstraktion mit Interfaces
  • Die richtige Interface-Erstellung
  • Interne Abbildung der Interface-Typen
  • Leeres Interface
  • Vom Interface zum konkreten Typ
  • Interface in andere Interfaces einbinden
  • Interfaces in Strukturen einbinden
  • Mocking und Tests mit io.Reader und io.Writer
  • Projekt: Kopieren mit Reflection
  • Einleitung
  • Reflection in Go
  • Beschreibung des Pakets
  • Testfälle für unser Paket
  • Umsetzung
  • Verwenden von Tags
  • Fehlerbehandlung
  • Grundlagen
  • Variablen und Konstanten
  • Eigene Fehlertypen
  • Einem Fehler Kontext hinzufügen
  • Keine Panik
  • Projekt: Ein einfacher Webserver
  • Einleitung
  • Das Modell für unseren Blog
  • Der Webserver und seine Handler
  • Templates erstellen
  • Kommentarfunktion
  • Files ausliefern
  • API bereitstellen
  • Template nur einmal parsen
  • Nebenläufiger Job für den Index
  • Ein paar kleine Verbesserungen

Títulos relacionados

    Otros títulos del mismo autor