Go für Webdevelopment



  • Hallo,

    vor einigen Wochen habe ich mit Python / Gae angefangen. (Ich liebe Python) und bin vor kurzen auf Go gestoßen.

    Da ich noch ganz am Anfang bin, stelle ich mir nun die Frage ob ich vielleicht Go für GAE lernen sollte.

    Momentan benutze ich Python + webapp2 + jinja2 in GAE (also kein großes Framework)
    So weit ich weiß bietet Go schon all dies zB( templating , requesthandler) also hätte ich so gut wie keine Nachteile in libs/frameworks.

    Habt ihr schon Erfahung mit Go gemacht ? (Webdevelopment)

    Der Speedvorteil in Webdevelopment dürfte nicht so groß sein , da das meiste soweiso db zugriffe sind, oder ?

    Momentan benutze ich Pycharm und das ist Workflow at it's best. Leider hat Go noch keine so guten IDE's. Mometan ist da aufjedenfall ein Grund bei Python zu bleiben. (für mich)



  • Wenn du Python nicht nehmen willst, würde ich Java statt Go bevorzugen.

    Wobei Python eigentlich das Standard Goto ist bei GAE.



  • Habe ein Projekt mal mit Go begonnen, weil mich die Features von Go beeindruckt haben.
    Nur ist es so, dass Go in Sachen Funktionalität Python nicht das Wasser reichen kann. Für die einfachsten Funktionen wie: 'does file exist' musst du dir grausame Wrapper schreiben.
    Für SQL gab es in der Zeit keine geeigneten Treiber die auf sql/driver basierten (hat sich aber etwas verbessert).

    An deiner Stelle würde mit Python weiterziehen oder Rails. Wenn du Go nimmst, wirst du schnell merken, dass es doch eine falsche Entscheidung war (i.e. warte auf Version 2).



  • Trudy schrieb:

    Für die einfachsten Funktionen wie: 'does file exist' musst du dir grausame Wrapper schreiben.

    Höh? Du öffnest einfach die Datei mit os.Open() und prüfst den zurückgegebenen Fehler. Alles andere ist aufgrund von möglichen Race-Conditions sowieso nicht sinnvoll, wenn du abhängig vom Ergebnis der Prüfung irgendwas mit der Datei machen willst.

    Falls dus trotzdem tun willst:

    if _, err := os.Stat("/deine/datei"); err != nil {
        if os.IsNotExist(err) {
            /* Datei existiert nicht */
        }
    }
    

    Aber wie gesagt, am besten einfach gleich öffnen.


Anmelden zum Antworten