{"id":655,"date":"2022-04-17T18:37:16","date_gmt":"2022-04-17T16:37:16","guid":{"rendered":"https:\/\/programmier-workshops.de\/blog\/?p=655"},"modified":"2022-04-17T19:03:12","modified_gmt":"2022-04-17T17:03:12","slug":"go-erste-schritte-mit-jupyter","status":"publish","type":"post","link":"https:\/\/programmier-workshops.de\/blog\/go-erste-schritte-mit-jupyter\/","title":{"rendered":"Go | Erste Schritte mit Jupyter"},"content":{"rendered":"\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/programmier-workshops.de\/blog\/go-erste-schritte-mit-jupyter\/#Einfuehrung\" >Einf\u00fchrung<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/programmier-workshops.de\/blog\/go-erste-schritte-mit-jupyter\/#Erste_Schritte\" >Erste Schritte<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Einfuehrung\"><\/span>Einf\u00fchrung<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Erster Startpunkt ist die Homepage von Go: <a href=\"https:\/\/go.dev\/\">The Go Programming Language<\/a><\/p>\n\n\n\n<p>Wenn das Interesse geweckt ist, dann folgt die Installation.<\/p>\n\n\n\n<p>Entweder durch einen <a rel=\"noreferrer noopener\" href=\"https:\/\/go.dev\/dl\/\" data-type=\"URL\" data-id=\"https:\/\/go.dev\/dl\/\" target=\"_blank\">Installer<\/a>, oder durch den Download des Paketes (z. B. f\u00fcr <a rel=\"noreferrer noopener\" href=\"https:\/\/go.dev\/dl\/go1.18.1.windows-amd64.zip\" data-type=\"URL\" data-id=\"https:\/\/go.dev\/dl\/go1.18.1.windows-amd64.zip\" target=\"_blank\">Windows<\/a>). Noch schneller geht es, wenn man eine bestehende Umgebung nutzt: mit Hilfe von Docker<\/p>\n\n\n\n<p>Voraussetzung ist eine lauff\u00e4hige Installation von <a href=\"https:\/\/www.docker.com\/get-started\/\" data-type=\"URL\" data-id=\"https:\/\/www.docker.com\/get-started\/\" target=\"_blank\" rel=\"noreferrer noopener\">Docker<\/a>.<\/p>\n\n\n\n<p>Wir <em>clonen<\/em> dann das notwendige <a href=\"https:\/\/github.com\/yunabe\/lgo\" data-type=\"URL\" data-id=\"https:\/\/github.com\/yunabe\/lgo\" target=\"_blank\" rel=\"noreferrer noopener\">Repository <\/a>und starten die Docker Umgebung:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"powershell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">git clone ttps:\/\/github.com\/yunabe\/lgo\ncd lgo\/docker\/jupyter\ndocker compose up<\/pre>\n\n\n\n<p>Sollte beim Starten eine Fehlermeldung auftauchen, dass der Port nicht erlaubt ist, dann \u00e4ndern wir diesen in der Datei<code> docker-compose.yml<\/code><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Error response from daemon: Ports are not available: listen tcp 0.0.0.0:8888: <\/pre>\n\n\n\n<p>Ein neuer m\u00f6glicher Port w\u00e4re dann 18888:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"> ports:\n      - \"8888:8888\"<\/pre>\n\n\n\n<p>Bei erfolgreichem Start kann die Web-Oberfl\u00e4che unter dem entsprechenden Port aufgerufen werden: Standard ist 8888, also <a href=\"http:\/\/127.0.0.1:8888\" target=\"_blank\" rel=\"noreferrer noopener\">http:\/\/127.0.0.1:8888<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"287\" src=\"https:\/\/programmier-workshops.de\/blog\/wp-content\/uploads\/2022\/04\/image-11-1024x287.png\" alt=\"\" class=\"wp-image-650\" srcset=\"https:\/\/programmier-workshops.de\/blog\/wp-content\/uploads\/2022\/04\/image-11-1024x287.png 1024w, https:\/\/programmier-workshops.de\/blog\/wp-content\/uploads\/2022\/04\/image-11-300x84.png 300w, https:\/\/programmier-workshops.de\/blog\/wp-content\/uploads\/2022\/04\/image-11-768x215.png 768w, https:\/\/programmier-workshops.de\/blog\/wp-content\/uploads\/2022\/04\/image-11.png 1473w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Die Web-Oberfl\u00e4che erfordert nun eine Anmeldung in Form eines Tokens:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"190\" src=\"https:\/\/programmier-workshops.de\/blog\/wp-content\/uploads\/2022\/04\/image-12-1024x190.png\" alt=\"\" class=\"wp-image-651\" srcset=\"https:\/\/programmier-workshops.de\/blog\/wp-content\/uploads\/2022\/04\/image-12-1024x190.png 1024w, https:\/\/programmier-workshops.de\/blog\/wp-content\/uploads\/2022\/04\/image-12-300x56.png 300w, https:\/\/programmier-workshops.de\/blog\/wp-content\/uploads\/2022\/04\/image-12-768x143.png 768w, https:\/\/programmier-workshops.de\/blog\/wp-content\/uploads\/2022\/04\/image-12.png 1040w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Dieses Token wird beim Start in der Konsole angezeigt. Einfach von dort kopieren<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"19\" src=\"https:\/\/programmier-workshops.de\/blog\/wp-content\/uploads\/2022\/04\/image-13-1024x19.png\" alt=\"\" class=\"wp-image-652\" srcset=\"https:\/\/programmier-workshops.de\/blog\/wp-content\/uploads\/2022\/04\/image-13-1024x19.png 1024w, https:\/\/programmier-workshops.de\/blog\/wp-content\/uploads\/2022\/04\/image-13-300x6.png 300w, https:\/\/programmier-workshops.de\/blog\/wp-content\/uploads\/2022\/04\/image-13-768x15.png 768w, https:\/\/programmier-workshops.de\/blog\/wp-content\/uploads\/2022\/04\/image-13.png 1268w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Erste_Schritte\"><\/span>Erste Schritte<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Wir erstellen ein erstes Notebook. Dazu klicken wir auf <em>New <\/em>im rechten oberen Teil des Men\u00fcs und w\u00e4hlen Go aus:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"178\" src=\"https:\/\/programmier-workshops.de\/blog\/wp-content\/uploads\/2022\/04\/image-14-1024x178.png\" alt=\"\" class=\"wp-image-666\" srcset=\"https:\/\/programmier-workshops.de\/blog\/wp-content\/uploads\/2022\/04\/image-14-1024x178.png 1024w, https:\/\/programmier-workshops.de\/blog\/wp-content\/uploads\/2022\/04\/image-14-300x52.png 300w, https:\/\/programmier-workshops.de\/blog\/wp-content\/uploads\/2022\/04\/image-14-768x134.png 768w, https:\/\/programmier-workshops.de\/blog\/wp-content\/uploads\/2022\/04\/image-14.png 1062w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Das neue Notebook mit dem Namen <code>Untitled <\/code>wird in einem neuen Fenster ge\u00f6ffnet:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"261\" src=\"https:\/\/programmier-workshops.de\/blog\/wp-content\/uploads\/2022\/04\/image-15-1024x261.png\" alt=\"\" class=\"wp-image-668\" srcset=\"https:\/\/programmier-workshops.de\/blog\/wp-content\/uploads\/2022\/04\/image-15-1024x261.png 1024w, https:\/\/programmier-workshops.de\/blog\/wp-content\/uploads\/2022\/04\/image-15-300x76.png 300w, https:\/\/programmier-workshops.de\/blog\/wp-content\/uploads\/2022\/04\/image-15-768x195.png 768w, https:\/\/programmier-workshops.de\/blog\/wp-content\/uploads\/2022\/04\/image-15.png 1053w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Nennen wir es erstmal um: dazu klicken wir auf den Name <code>Untitled<\/code>:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"998\" height=\"321\" src=\"https:\/\/programmier-workshops.de\/blog\/wp-content\/uploads\/2022\/04\/image-16.png\" alt=\"\" class=\"wp-image-670\" srcset=\"https:\/\/programmier-workshops.de\/blog\/wp-content\/uploads\/2022\/04\/image-16.png 998w, https:\/\/programmier-workshops.de\/blog\/wp-content\/uploads\/2022\/04\/image-16-300x96.png 300w, https:\/\/programmier-workshops.de\/blog\/wp-content\/uploads\/2022\/04\/image-16-768x247.png 768w\" sizes=\"auto, (max-width: 998px) 100vw, 998px\" \/><\/figure>\n\n\n\n<p>Wie bei Programmieren \u00fcblich ist das erste Programm ein<em> Hello World<\/em>-Programm:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"937\" height=\"328\" src=\"https:\/\/programmier-workshops.de\/blog\/wp-content\/uploads\/2022\/04\/image-18.png\" alt=\"\" class=\"wp-image-674\" srcset=\"https:\/\/programmier-workshops.de\/blog\/wp-content\/uploads\/2022\/04\/image-18.png 937w, https:\/\/programmier-workshops.de\/blog\/wp-content\/uploads\/2022\/04\/image-18-300x105.png 300w, https:\/\/programmier-workshops.de\/blog\/wp-content\/uploads\/2022\/04\/image-18-768x269.png 768w\" sizes=\"auto, (max-width: 937px) 100vw, 937px\" \/><\/figure>\n\n\n\n<p>Als n\u00e4chstes, etwas Anspruchsvolleres: die Fibonacci-Sequenze<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"golang\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">func fib_recursive(n int) int {\n    if n &lt;= 1 {\n        return n\n    }\n    return fib_recursive(n-1) + fib_recursive(n-2)\n}<\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"939\" height=\"300\" src=\"https:\/\/programmier-workshops.de\/blog\/wp-content\/uploads\/2022\/04\/image-20.png\" alt=\"\" class=\"wp-image-677\" srcset=\"https:\/\/programmier-workshops.de\/blog\/wp-content\/uploads\/2022\/04\/image-20.png 939w, https:\/\/programmier-workshops.de\/blog\/wp-content\/uploads\/2022\/04\/image-20-300x96.png 300w, https:\/\/programmier-workshops.de\/blog\/wp-content\/uploads\/2022\/04\/image-20-768x245.png 768w\" sizes=\"auto, (max-width: 939px) 100vw, 939px\" \/><\/figure>\n\n\n\n<p>F\u00fcr gr\u00f6\u00dfere Were kann das schon etwas dauern<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"929\" height=\"84\" src=\"https:\/\/programmier-workshops.de\/blog\/wp-content\/uploads\/2022\/04\/image-21.png\" alt=\"\" class=\"wp-image-679\" srcset=\"https:\/\/programmier-workshops.de\/blog\/wp-content\/uploads\/2022\/04\/image-21.png 929w, https:\/\/programmier-workshops.de\/blog\/wp-content\/uploads\/2022\/04\/image-21-300x27.png 300w, https:\/\/programmier-workshops.de\/blog\/wp-content\/uploads\/2022\/04\/image-21-768x69.png 768w\" sizes=\"auto, (max-width: 929px) 100vw, 929px\" \/><\/figure>\n\n\n\n<p>Also eine erste, kleine Optimierung<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"golang\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">func fib_loop(n int) int {\n    f := make([]int, n+1, n+2)\n    if n &lt; 2 {\n        f = f[0:2]\n    }\n    f[0] = 0\n    f[1] = 1\n    for i := 2; i &lt;= n; i++ {\n        f[i] = f[i-1] + f[i-2]\n    }\n    return f[n]\n}<\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"934\" height=\"535\" src=\"https:\/\/programmier-workshops.de\/blog\/wp-content\/uploads\/2022\/04\/image-22.png\" alt=\"\" class=\"wp-image-680\" srcset=\"https:\/\/programmier-workshops.de\/blog\/wp-content\/uploads\/2022\/04\/image-22.png 934w, https:\/\/programmier-workshops.de\/blog\/wp-content\/uploads\/2022\/04\/image-22-300x172.png 300w, https:\/\/programmier-workshops.de\/blog\/wp-content\/uploads\/2022\/04\/image-22-768x440.png 768w\" sizes=\"auto, (max-width: 934px) 100vw, 934px\" \/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Einf\u00fchrung Erster Startpunkt ist die Homepage von Go: The Go Programming Language Wenn das Interesse geweckt ist, dann folgt die Installation. Entweder durch einen Installer, oder durch den Download des Paketes (z. B. f\u00fcr Windows). Noch schneller geht es, wenn man eine bestehende Umgebung nutzt:&hellip;<\/p>\n","protected":false},"author":1,"featured_media":658,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[20,3],"tags":[],"class_list":["post-655","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-go","category-kurs"],"_links":{"self":[{"href":"https:\/\/programmier-workshops.de\/blog\/wp-json\/wp\/v2\/posts\/655","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/programmier-workshops.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/programmier-workshops.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/programmier-workshops.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/programmier-workshops.de\/blog\/wp-json\/wp\/v2\/comments?post=655"}],"version-history":[{"count":11,"href":"https:\/\/programmier-workshops.de\/blog\/wp-json\/wp\/v2\/posts\/655\/revisions"}],"predecessor-version":[{"id":683,"href":"https:\/\/programmier-workshops.de\/blog\/wp-json\/wp\/v2\/posts\/655\/revisions\/683"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/programmier-workshops.de\/blog\/wp-json\/wp\/v2\/media\/658"}],"wp:attachment":[{"href":"https:\/\/programmier-workshops.de\/blog\/wp-json\/wp\/v2\/media?parent=655"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/programmier-workshops.de\/blog\/wp-json\/wp\/v2\/categories?post=655"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/programmier-workshops.de\/blog\/wp-json\/wp\/v2\/tags?post=655"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}