Arbeiten mit Markdown in Go: Bibliotheken blackfriday, goldmark und chroma

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Arbeiten mit Markdown in Go (Golang): Überblick über beliebte Bibliotheken



Go (Golang) ist eine moderne, kompilierte Sprache, die häufig für die Erstellung von leistungsstarken Webanwendungen, CLI-Tools und Tools zur Generierung statischer Websites gewählt wird. Eine typische Aufgabe ist die Verarbeitung von Markdown-Auszeichnungen. In diesem Artikel betrachten wir drei wichtige Bibliotheken: blackfriday, goldmark und chroma, und zeigen, wie man sie kombiniert, um einen vollwertigen Konverter von Markdown in HTML mit Syntax-Highlighting zu erstellen.



1. Warum Markdown in Go verarbeiten?

Markdown ist eine leichte Auszeichnungssprache, die häufig in Dokumentationen, Blogs, README-Dateien und Content-Management-Systemen verwendet wird. Im Go-Ökosystem gibt es mehrere ausgereifte Bibliotheken, die Folgendes ermöglichen:

  • Konvertierung von Markdown in HTML für die Webveröffentlichung.
  • Hinzufügen von Syntax-Highlighting für Codeblöcke.
  • Erstellung eigener Erweiterungen (z. B. Unterstützung für LaTeX, Diagramme oder benutzerdefinierte Blöcke).
  • Integration in Generatoren für statische Websites (Hugo, eigene Lösungen).


2. Die Bibliothek blackfriday (v2)

Blackfriday ist eine der ältesten und beliebtesten Bibliotheken für Go. Sie zeichnet sich durch hohe Geschwindigkeit und ein Verhalten aus, das nahe am CommonMark-Standard liegt. Installation:

go get github.com/russross/blackfriday/v2


Einfaches Anwendungsbeispiel:

package main

import ( "fmt" "github.com/russross/blackfriday/v2")

func main() { input := []byte("## Hallo, Markdown!

Dies ist **fetter Text** und `Code`.") output := blackfriday.Run(input) fmt.Println(string(output))}


Das Ergebnis ist HTML-Code mit einer h2-Überschrift, einem Absatz und den Tags strong/code. Blackfriday unterstützt Erweiterungen: Tabellen, Durchstreichungen, Aufgabenlisten (task lists) und automatische Links. Zur Aktivierung verwenden Sie:

html := blackfriday.Run(input,    blackfriday.WithNoExtensions(),    blackfriday.WithExtensions(blackfriday.CommonExtensions),)


3. Die Bibliothek goldmark (empfohlen)

Goldmark ist ein moderner Markdown-Parser, der in reinem Go geschrieben ist. Er entspricht vollständig der CommonMark-Spezifikation 0.30 und bietet eine flexible API für Erweiterungen. Installation:

go get github.com/yuin/goldmark


Basisbeispiel:

package main

import ( "bytes" "fmt" "github.com/yuin/goldmark")

func main() { source := []byte("# Überschrift

Normaler Text mit **fett** und *kursiv*.") var buf bytes.Buffer if err := goldmark.Convert(source, &buf); err != nil { panic(err) } fmt.Println(buf.String())}


Goldmark lässt sich leicht erweitern. Integrierte Erweiterungen umfassen Tabellen, Aufgabenlisten, Fußnoten, automatische Links und Code-Highlighting über chroma. Beispiel mit der Tabellen-Erweiterung:

import (    "github.com/yuin/goldmark"    "github.com/yuin/goldmark/extension")

markdown := goldmark.New( goldmark.WithExtensions(extension.Table),)


4. Code-Highlighting mit chroma

Chroma ist eine Bibliothek für Syntax-Highlighting in Go, die über 190 Programmiersprachen und zahlreiche Design-Themen unterstützt. Installation:

go get github.com/alecthomas/chroma/v2


Die Integration mit goldmark sieht so aus:

package main

import ( "bytes" "fmt" "github.com/alecthomas/chroma/v2/quick" "github.com/yuin/goldmark" highlighting "github.com/yuin/goldmark-highlighting/v2")

func main() { source := []byte("```gopackage main

import \\"fmt\\"

func main() { fmt.Println(\\"Hello, world!\\")}```") markdown := goldmark.New( goldmark.WithExtensions( highlighting.Highlighting,

Empfehlungen