Beginnen Sie mit dem Entwickeln mit Go auf dem Mac

Was Sie erstellen werden

Webanwendungen sind heutzutage ein Teil des Lebens. Das Gehen Sprache von Google ist eine nützliche Sprache, um webbasierte Anwendungen zu erstellen. Ich zeige Ihnen, wie Sie mit Go auf einem Mac arbeiten.

Einrichten der Go-Umgebung

Der einfachste Weg, um das zu installieren Gehen Programmiersprache ist von Homebrew. Wenn Sie nicht installiert haben Homebrew doch das Tutorial Homebrew Demystified: Der ultimative Paket-Manager von OS X wird dir zeigen wie.

Geben Sie in einem Terminal Folgendes ein:

brauen installieren gehen 
Find the go Installieren

So finden Sie den Standort der gehen Installationsverzeichnis, geben Sie diesen Befehl in Ihr Terminalprogramm ein:

ls -la 'was geht' 

Sie sollten dieses Ergebnis erhalten:

lrwxr-xr-x 1 raguayisches rad 25 Mai 14 15:11 / usr / local / bin / go ->… /Cellar/go/1.2.2/bin/go 

Dies zeigt, dass die Hauptinstallation von Gehen ist /usr/local/Cellar/go/1.2.2. Sie müssen die Umgebungsvariable einrichten GOROOT zu sein libexec Verzeichnis dieses Verzeichnisses.

Erstellen Sie im Basisverzeichnis das Verzeichnis gehen. Das gehen Dort werden alle heruntergeladenen Pakete gespeichert. Fügen Sie Ihrem hinzu .bashrc Datei und / oder .zshrc Datei diese Zeile:

export GOPATH = "/ Benutzer // go "export GOROOT =" // libexec " 

Wenn Sie Fisch verwenden, fügen Sie dies Ihrem hinzu config.fish Datei:

set -xg GOPATH "/ Benutzer // go "set -xg GOROOT" // libexec " 

Um go zu testen, geben Sie Folgendes in ein Terminal ein:

Go-Version 

Es sollte die Version von gedruckt werden gehen, das ist installiert. Auf meinem System jetzt, zeigt es go version go1.2.2 darwin / amd64.

Um nach neueren Versionen zu suchen, lassen Sie HomeBrew finde das heraus. Geben Sie in der Befehlszeile Folgendes ein:

Brew Update Brew-Upgrade 

Das aktualisieren Befehl erhält eine Liste der aktualisierten Programme. Das Aktualisierung Befehl führt das eigentliche Upgrade durch. Auf diese Weise müssen Sie niemals die verschiedenen Websites durchsuchen, um Updates zu finden.

Einrichten des Editors

Nun das Gehen Ist auf dem System, müssen Sie den Editor einrichten. ich benutze Erhabener Text 3, Vim, und Emacs viel. Deshalb muss ich meine Redakteure auf den neuesten Stand bringen Gehen.

Zum Erhabener Text, es ist einfach. Installieren Sie Package Manager für Sublime Text. Dies ermöglicht eine einfache Paketinstallation. Das Paket, das Sie installieren möchten, lautet goSublime. goSublime gibt Ihnen Gehen Sprachsyntax-Hervorhebung und a Gehen System erstellen.

Installieren Gehen Syntaxhervorhebung für Emacs, Installieren Sie die eLisp-Routinen in $ GOROOT / misc / emacs in den emacs elisp-ordner. Zum Emacs Um die neuen Dateien zu laden, fügen Sie diese Zeile dem hinzu .Emacs Datei im Heimatordner:

(erfordert 'go-mode-load') 

Die Unterstützung für Vim nimmt mehr Arbeit. Führen Sie diese in einem Terminal aus bash Befehlszeilen:

mkdir -p $ HOME / .vim / ftdetect mkdir -p $ HOME / .vim / syntax mkdir -p $ HOME / .vim / autoload / go ln -s $ GOROOT / misc / vim / fttectect / gofiletype.vim $ HOME / .vim / ftdetect / ln -s $ GOROOT / misc / vim / syntax / go.vim $ HOME / .vim / syntax ln -s $ GOROOT / misc / vim / autoload / go / complete.vim $ HOME / .vim / Autoload / Go-Echo "Syntax auf" >> $ HOME / .vimrc 

Die letzte Zeile wird nur benötigt, wenn Sie noch keine haben Syntax auf in deiner .vimrc.

Bibliotheken und deren Verwendung

Traditionell sind Bibliotheken die Grundlagen für die Modularisierung von Code zur Wiederverwendung. Im gehen, Bibliotheken sind Pakete. Die Go-Sprache wird mit vielen integrierten Paketen geliefert. Sie können sie auf der Paketseite scannen. Es gibt auch viele 3rd Party Packages und Projekte.

Für die Titel-Fall-Server, Ich werde das Fremdanbieterpaket web.go verwenden. Es ist ein einfaches Webserver-Framework, das die Erstellung webbasierter Anwendungen in vereinfacht Gehen. Um dieses Paket in Ihr System zu laden, geben Sie Folgendes ein:

Installieren Sie github.com/hoisie/web 

Das Installieren Befehl nimmt ein Argument an, das eine Webadresse ist, ohne das http: //, für ein Paket zum Download. Es befindet sich im $ GOPATH-Verzeichnis, das zuvor erstellt wurde.

Das Projekt: Titel-Case-Server

Der Titelfall ist eine der wählerischsten Sachen. Manche Leute mögen bestimmte Wörter immer in Kleinbuchstaben. Andere meinen, die Wörter sollten alle Titel sein. Um dies richtig auszuführen (was bei den meisten Paketroutinen nicht der Fall ist), müssen Sie jedes Wort mit zwei Wörterbüchern vergleichen, um alles richtig zu machen. Es ist ein großartiges Einsteigerprojekt in einer neuen Programmiersprache.

// // Paket: Haupt // // Beschreibung: Dies ist das Hauptpaket für den goTitleServer. // Dies ist ein einfacher, auf Web-Technologie basierender Titel // Text-Server. // paket main 

Das // Symbol kennzeichnet einen Kommentar. Der Compiler ignoriert danach alles in der Zeile. Ich möchte alles kommentieren. Wenn Sie den Code Jahre später lesen, helfen Ihnen die Kommentare, sich zu erinnern, wie das Programm funktioniert.

Die Zeile hinter den Kommentaren ist die Paketdeklaration. Jede Datei das Gehen Verwendungen müssen Teil eines Pakets sein. Jedes Programm hat nur ein Programm Main Paket, das die haben muss Main() Funktion. Dies sagt dem Compiler, wo er anfangen soll, um das Programm auszuführen.

// // Importiere die Bibliotheken, die wir für den Server benötigen. // importieren ("github.com/hoisie/web" "os" "Zeichenfolgen") 

Um Pakete nutzen zu können, müssen Sie einführen Sie. Alle verwendeten Pakete müssen in dieser Anweisung enthalten sein. Ich schließe die zwei Basispakete von ein os für die Betriebssystemfunktionen und Streicher zur Manipulation von Strings. Das github.com/hoisie/web lädt die web.go Paket zum Erstellen des Webservers.

// // Funktion: homePage // // Beschreibung: Diese Funktion dient als Startseite für die Eingabe der Zeichenfolge // zum Konvertieren. // func homePage () string return '     Titel-Fall-Server        

Titel-Fall-Server

Zu korrigierender Text:

Ergebnisse:

'

Diese Funktion erstellt die Startseite. Dies gibt der Server an einen Webbrowser, der die Startseite der Website anfordert. Das func Befehl ist eine Funktionsdeklaration. Das Startseite ist der Name der Funktion. Das () teilt dem Compiler mit, dass diese Funktion keine Eingaben benötigt. Das Schnur nachdem die Klammer dem Compiler mitgeteilt hat, dass die Funktion einen String zurückgibt.

Alles im Inneren ist der Code für die Funktion. Diese Funktion ist einfach: Rückkehr die zitierte Zeichenfolge an den Aufrufer der Funktion. Im gehen, Sie können Strings mit angeben "", ", und ". Ich habe den letzten hier verwendet, um eine mehrzeilige Zeichenfolge zu haben, die überhaupt nicht verarbeitet wird. Sie nennen das eine wörtliche Zeichenfolge.

Mit der wörtlichen Zitatmethode kann ich die Webseite so gestalten, wie ich es normalerweise tun würde. Nichts innerhalb der Häkchen wird vom Compiler verarbeitet. Es wird direkt in das Programm kopiert und das Programm gibt es auf Anforderung an den Webbrowser zurück.

// // Funktion: titleCase // // Beschreibung: Dies nimmt eine Zeichenfolge und konvertiert sie in einen Titel. // gibt dann den String zurück. // // Eingabe: // val Rest der URL, falls eine gegeben wird. // func titleCase (ctx * web.Context, val string) string // // Liefert die zu konvertierende Zeichenfolge und teilt sie nach Leerzeichen auf. // words: = strings.Split (ctx.Params ["text"], "") // // Das Array von Wörtern, das immer klein geschrieben werden sollte, es sei denn, es ist das erste // Wort des Titels. // lower: = […] string "bis", "an", "und", "um", "als", "aber", "von", "für", "wenn", "in", "on", "oder", "ist", "mit", "a", "das", "von", "vs", "vs.", "via", "via", "de" / / // Das Array von Wörtern, das immer groß geschrieben werden soll. // upper: = […] string "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X", "HTML", "CSS", "AT & T", "PHP" // // Für jedes Wort im Titel. // für i, _: = Bereichswörter // // Angenommen, das Wort ist nicht in Groß- oder Kleinschreibung enthalten. // up: = false low: = false // // Durchläuft jedes Wort im Array mit Kleinbuchstaben. // für j, _: = Bereich niedriger wenn Strings.ToLower (Wörter [i]) == niedriger [j] // // stimmt überein. Stellen Sie sicher, dass das Wort im Array das gleiche ist. // Setze das Einrichtungsflag als wahr. // words [i] = lower [j] low = true // // Durchlaufen Sie jedes Wort im Array mit Großbuchstaben. // für k, _: = Bereich obere wenn Strings.ToUpper (Wörter [i]) == obere [k] // // stimmt überein. Stellen Sie sicher, dass das Wort dasselbe ist wie das Array. // Setze das Low-Flag auf true. // words [i] = upper [k] up = true // // Wenn sich das Wort nicht im oberen oder unteren Array befand, führen Sie eine normale // Titelumwandlung durch. Dies macht den ersten Buchstaben in Großbuchstaben und // die anderen Buchstaben in Kleinbuchstaben. // if (! up) && (! low) words [i] = strings.Title (words [i]) // // Vergewissern Sie sich, dass das erste Wort Titelwort ist! // Wörter [0] = Zeichenfolgen.Titel (Wörter [0]) // // Geben Sie den Titel zurück, indem Sie alle Wörter mit einem Leerzeichen verbinden. // return strings.Join (Wörter, "") 

Mit diesem Code wird eine an den Webserver übergebene Zeichenfolge in das entsprechende Titelfeld übersetzt.

Das ctx * web.Context, Wertzeichenfolge teilt dem Compiler mit, dass diese Funktion zwei Variablen erhält. Einer ist ein Zeiger auf die web.Context Datenstruktur definiert in der web.go Paket. Der andere ist eine Zeichenfolge. Sie deklarieren eine Variableneingabe anhand eines Namens und des Variablentyps.

Das * Symbol bezeichnet einen Zeiger. Ein Zeiger ist eine Adresse des Speicherorts für die Datenstruktur. Gehen folgt C Datenzeigerformate.

Die erste Anweisung erhält den Parameter mit dem Namen Text dass der Browser an den Server übergibt und ihn durch Leerzeichen aufteilt. Das strings.Split nennt das Teilt Funktion innerhalb der Streicher Paket. Sie können sich Pakete vorstellen, die Objekten in C ++ ähneln. Sie rufen sie mit einem an . zwischen dem Paketnamen und dem Funktionsnamen.

In jedem Paket ist jede Funktion, die mit einem Großbuchstaben beginnt, von außerhalb des Pakets zugänglich. Jede Funktion, die mit einem Kleinbuchstaben beginnt, ist nur vom Paket aus zugänglich.

Wenn der strings.Split Die Funktion teilt einen String nach dem Trennzeichen auf und gibt ein Array von Strings zurück. Der Ausgang wird dann der Variablen zugewiesen Wörter. Um eine neue Variable zu erstellen, müssen Sie bei der ersten Verwendung eine verwenden : = es zuweisen Wenn Sie dieselbe Variable in ein anderes String-Array umwandeln möchten, verwenden Sie die = Operator.

Erstellen Sie anschließend zwei Arrays für die verschiedenen Wortlisten. niedriger ist für alle Kleinbuchstaben und Oberer, höher für alle großen Wörter. Das […] teilt dem Compiler mit, die Anzahl der Zuweisungen aus den Daten zu erhalten. Auf diese Weise können Sie Wörter zu der Liste hinzufügen, ohne sich Gedanken darüber machen zu müssen, ob die Anzahl erhöht wird. Das Schnur teilt dem Compiler mit, dass jeder Eintrag im Array eine Zeichenfolge ist.

ich benutze für… bereich Schleifen, über die Arrays zu sequenzieren. Die erste führt jedes in der Eingabe eingegebene Wort durch, während zwei andere Schleifen jedes Wörterverzeichnis für jedes Wort durchlaufen. Es wandelt zuerst das Wort in Kleinbuchstaben um, vergleicht es mit jedem Wort in der niedriger Wörterbuch. Wenn es eine Übereinstimmung gibt, zwingt das Wort alle Kleinbuchstaben, indem die Wortposition der Zeichenfolge im Wörterbuch zugewiesen wird. Dann macht es dasselbe mit dem Oberer, höher Wörterbuch.

Wenn das Wort war nicht in beiden Wörterbuchen führt es dann die Streicher. Titel Funktion zum Wort. Dies zwingt den ersten Buchstaben in Großbuchstaben und den Rest in Kleinbuchstaben.

Schließlich machte das erste Wort den Titelfall, egal was. Das Saiten Die Funktion setzt das String-Array mit einem Leerzeichen zusammen. Die Ergebnisse werden an den Aufrufer der Funktion zurückgegeben.

// // Funktion: killServer // // Beschreibung: Diese Funktion stoppt den Server. // func killServer () string os.Exit (0) gibt "" zurück 

Das KillServer Funktion macht genau das, was der Name impliziert: tötet den Webserver. Es ruft einen Anruf an os.Exit () Funktion in der os Paket.

// // Funktion: main // // Beschreibung: Dies ist die Hauptfunktion, die beim Ausführen des Programms aufgerufen wird. // func main () // // setze die titlecase-Webadresse auf die richtige Funktion. // web.Get ("/ titlecase /(.*)", titleCase) // // Richten Sie einen Pfad ein, um den Server zu beenden. // web.Get ("/ kill", killServer) // // Senden Sie die Startseite an die entsprechende Funktion. // web.Get ("/", homePage) // // Führen Sie den Server auf dem lokalen Computer an Port 9911 aus. // web.Run ("127.0.0.1:9910") 

Das Main Funktion verwendet web.Get die einrichten Erhalten Protokollrouten für die Homepage, die Kill-Seite und die Konvertierungsroutine für Titelkoffer. Das Netz ist der web.go Paket, das wir zuvor heruntergeladen haben. Das Erhalten definiert a HTML Get anfordern. Es gibt auch die Stellen, Post, und Löschen Operatoren, die Sie definieren können.

Das web.run Die Anweisung startet den Webserver an der angegebenen Adresse und dem angegebenen Port. Das web.go Das Paket übernimmt von dort aus und ruft Ihre Routinen auf, wenn die definierten Adressen abgefragt werden.

Kompilieren

Nun, da das Programm fertig ist, müssen Sie es kompilieren. A kompilieren Gehen Programm, sagen Sie es, um die Datei mit der Hauptfunktion zu erstellen. Um dieses Programm zu kompilieren, geben Sie Folgendes ein:

go build goTitleServer.go erstellen 

Wenn es fertig ist, haben Sie es goTitleServer im Verzeichnis. Das ist das volle Programm. Sie können es starten mit:

./ goTitleServer 

Dann öffnen Sie einen Webbrowser zu http://127.0.0.1:9910. Sie sollten das sehen:

goTitleServer läuft

Geben Sie Ihre Zeichenfolge in das Feld ein Zu korrigierender Text: Textfeld drücken Sie Konvertieren, und der konvertierte String erscheint in der Ergebnisse: Textfeld.

Titelfall-Server-Workflow

Ich habe dieses Programm natürlich in eine Alfred Arbeitsablauf. Es ist Teil des Downloads zusammen mit der goTitleServer.go Datei. Dies zeigt ein Beispiel für die Verwendung des Servers ohne Webbrowser. Es verwendet den folgenden Bash-Code, um den Server abzufragen:

query = 'echo "query" | sed -e 's / / + / g "; curl" http: // localhost: 9910 / titlecase /? text = $ query "; 

Die erste Zeile ändert alle Leerzeichen in Abfrage String zu +. Das locken Befehl ist ein Standard-Unix-Befehl zum Abrufen von Informationen von einem Webserver. Die Befehlszeile verwendet die locken Befehl, den eine URL-Anforderung wie die Webseite erstellen würde, um sie zu senden. Was wird in den Ergebnissen aus der Konvertierung der Zeichenfolge in den Titel zurückgegeben.

Das Alfred Aufforderung Befehle für diesen Workflow sind:

tis: starten-Dieser Befehl startet den Server. Sie müssen den Server starten, bevor Sie konvertieren können.

tcs: konvertieren-Dieser Befehl benötigt einen String, der konvertiert werden soll. Der Workflow zeigt das Ergebnis in einer Benachrichtigung an und kopiert es in die Zwischenablage.

tcs: töten-Dieser Befehl beendet den Webserver.

Es gibt auch ein Hotkey Sie müssen diese zuweisen, um die aktuelle Auswahl zu übernehmen, sie über den Title-Case-Server auszuführen und sie wieder einzufügen.

Fazit

Jetzt haben Sie das System so konfiguriert, dass Webanwendungen mithilfe von geschrieben und kompiliert werden Gehen, Sie müssen anfangen, einige zu schreiben! Nehmen Sie diese Codebasis und erweitern Sie sie um weitere Textverarbeitungsfunktionen, um einen hervorragenden Textverarbeitungsserver zu erstellen.