Go for Java Programmers: Learn the Google Go Programming Language 1st Edition Barry Feigenbaum pdf download
Go for Java Programmers: Learn the Google Go Programming Language 1st Edition Barry Feigenbaum pdf download
https://ebookmeta.com/product/go-for-java-programmers-learn-the-
google-go-programming-language-1st-edition-barry-feigenbaum/
https://ebookmeta.com/product/network-programming-with-go-
language-essential-skills-for-programming-using-and-securing-
networks-with-open-source-google-golang-2nd-edition-jan-
newmarch-2/
https://ebookmeta.com/product/network-programming-with-go-
language-essential-skills-for-programming-using-and-securing-
networks-with-open-source-google-golang-2nd-edition-jan-newmarch/
https://ebookmeta.com/product/learn-concurrent-programming-with-
go-meap-v02-james-cutajar/
https://ebookmeta.com/product/testing-for-language-teachers-3rd-
edition-arthur-hughes-2/
The Religion of Ethnicity 1st Edition Gary A Kunkelman
https://ebookmeta.com/product/the-religion-of-ethnicity-1st-
edition-gary-a-kunkelman/
https://ebookmeta.com/product/wolf-inn-complete-series-box-
set-1st-edition-layla-silver/
https://ebookmeta.com/product/future-networks-services-and-
management-underlay-and-overlay-edge-applications-slicing-cloud-
space-ai-ml-and-quantum-computing-1st-edition-mehmet-toy/
https://ebookmeta.com/product/ultimate-harley-davidson-new-
edition-hugo-wilson/
https://ebookmeta.com/product/tietz-fundamentals-of-clinical-
chemistry-and-molecular-diagnostics-nader-rifai/
Science, Public Health and Nation-Building in Soekarno-
Era Indonesia 1st Edition Vivek Neelakantan
https://ebookmeta.com/product/science-public-health-and-nation-
building-in-soekarno-era-indonesia-1st-edition-vivek-neelakantan/
Go for Java
Programmers
Learn the Google Go Programming
Language
—
Barry Feigenbaum, Ph.D.
Go for Java Programmers
Learn the Google
Go Programming Language
Introduction������������������������������������������������������������������������������������������������������������xix
Assessments�������������������������������������������������������������������������������������������������������xxxv
v
Table of Contents
vi
Table of Contents
Go Command-Line Tools������������������������������������������������������������������������������������������������������������� 61
Tools Bundled in the Go Command���������������������������������������������������������������������������������������� 62
Other Tools����������������������������������������������������������������������������������������������������������������������������� 64
Go Runs Programs Instead of Classes���������������������������������������������������������������������������������������� 64
Go Memory Management������������������������������������������������������������������������������������������������������������ 66
Go Identifiers������������������������������������������������������������������������������������������������������������������������������� 71
Go Scopes����������������������������������������������������������������������������������������������������������������������������������� 73
Go Scopes vs. Go Source Files���������������������������������������������������������������������������������������������� 76
Initializing Go Variables��������������������������������������������������������������������������������������������������������������� 78
Lifetimes of Go Identifiers����������������������������������������������������������������������������������������������������������� 80
Go Module Summary������������������������������������������������������������������������������������������������������������������� 81
Go Assignments and Expressions����������������������������������������������������������������������������������������������� 87
Text Formatting in Go������������������������������������������������������������������������������������������������������������������ 89
Goroutines����������������������������������������������������������������������������������������������������������������������������������� 94
Issues with Concurrency������������������������������������������������������������������������������������������������������� 94
Go Concurrency��������������������������������������������������������������������������������������������������������������������� 97
Goroutines by Example�������������������������������������������������������������������������������������������������������� 100
vii
Table of Contents
viii
Table of Contents
ix
Table of Contents
x
Table of Contents
Index��������������������������������������������������������������������������������������������������������������������� 575
xi
About the Author
Barry Feigenbaum, Ph.D., has decades of software engineering experience. During his
career, he has worked for major industry-leading companies, such as IBM and Amazon,
and is currently at Dell where he is a Senior Principal Software Engineer. He has worked
on mainframe and midrange servers and many applications for personal computers.
He has developed software products, such as assemblers for multiple hardware
architectures, in many key industry languages such as C/C++/C#, Python, JavaScript,
Java, and now Go. He has extensive experience in the full software development life
cycle. Most recently, he has committed himself to leading teams developing mission-
critical microservices, most often written in Go, that operate in large clustered
environments.
He led the early development of the LAN support inside Microsoft Windows
(he defined the SMB protocol that is the basis for both the CIFS and the SAMBA
technologies). He has served as a software tester, developer, and designer as well as a
development team lead, architect, and manager on multiple occasions. He was a key
contributor as a developer, architect, and manager to several releases of PC-DOS and
OS/2. In these roles, he worked extensively with Microsoft on joint requirements, design,
and implementation.
Dr. Feigenbaum has a Ph.D. in Computer Engineering with a concentration in
object-oriented (OO) software design and other degrees in Electrical Engineering. He
has published multiple articles in technical magazines and juried journals. He has
coauthored several books on IBM PC-DOS. He has spoken at numerous technical
conferences, such as JavaOne. He has served on industry standard bodies. He has taught
multiple college-level courses on data structures, software engineering, and distributed
software as an adjunct professor at several universities. He has over 20 issued US patents.
He is married, has one son, and lives in Austin, TX.
xiii
About the Technical Reviewer
Ronald Petty, M.B.A., M.S., is founder of Minimum
Distance LLC, a management consulting firm based in
San Francisco. He spends his time helping technology-
based startups do the right thing. He is also an instructor
at UC Berkeley Extension.
xv
Acknowledgments
To my son Barry, Jr., for his careful review of the drafts of this book. He provided a
perfect example of the book’s target audience: a professional Java programmer wanting
to learn Go.
A hearty thanks to all the other reviewers that made helpful comments, suggested
additional content, and/or made errata corrections: Charles Stein, Divya Khatnar, Rosish
Shakya, and Sharath Hegde.
I especially want to thank Ronald Petty for his thorough technical review of this text.
Also, for his numerous suggested content improvements and code samples, several of
which were included.
I wish to thank Jason Isaacs at Dell who supported me during the creation of this text
and allowed me to go forward with this effort.
To the developers of Go and to the Go community in general, many thanks for
building such a powerful tool. I learned much from the extensive Go documentation and
the many articles, blogs, wikis, tutorials, and books provided by the community.
xvii
Introduction
Since its debut in the mid-1990s, Java has enjoyed huge success. Arguably more so
than other languages, Java is a major player in the web application space and key data
processing areas such as Big Data tools, among others. Among other aspects, Java’s high
level of portability across operating systems and hardware architectures, its rich and
improving over time language and library of functions, as well as its good performance
contributed to this success.
But Java comes with some drawbacks. Java was created at a time when Object-
Oriented Programming1 was the norm and network delivery of code was advantageous.
The resulting Java runtime footprint is quite large, and it is resource intensive. The Java
developers are trying to address this to some degree with the use of Java Modules along
with standard library subsetting and the Graal2 Virtual Machine, but typical Java code,
for the same functionality, often uses more resources than typical Go code does.
As time is passing, the Java language and runtime is no longer an optimal fit for many
modern, especially cloud-based, applications. Also, the Java language is continuously
growing and can be a challenge to fully master. Go is deliberately a simple, thus easy to
master, language.
The Go language and runtime is relatively new and designed to meet the needs
of modern cloud computing systems and other system3 programming tasks. It is
considered by many to be a “better C than C” and thus a potential replacement for the C4
programming language, the language it most closely resembles. Go is also likely to take
over a large fraction of the Java server and application space. Thus, it is the raison d'etre
for this book.
Many new applications and reengineering of existing applications are now being
developed in Go. For applications previously written in Java, Kotlin5 or Scala6 JVM
1
https://en.wikipedia.org/wiki/Object-oriented_programming
2
www.graalvm.org/java/
3
Oriented to operating the computer system rather than achieving business tasks.
4
https://en.wikipedia.org/wiki/C_(programming_language)
5
https://kotlinlang.org/
6
www.scala-lang.org/
xix
Other documents randomly have
different content
yrkesmålare nyttiga pimstenen, jag frotterade mig med skuggorna
på Romas forum, besåg Moulin Rouge och Bal Bullier och
genomströvade med detektiver Paris och Londons mördarhålor. Jag
drack kopiöst med öl i München och stoppade en gång lyxkurirtåget
mellan Paris och Berlin genom att av misstag dra i alarmklockan.
Jag kom en kväll vid niotiden från Norrmalm och jag gjorde mig
ingen brådska, där jag strävade uppför Götgatan. Hur det var, kom
jag i tankarna att gå förbi Högbergsgatan, där jag bort vika av, och
om några ögonblick fick jag syn på en skylt över ett så kallat Trillin i
jordvåningen av ett hus. Där stod med röda bokstäver i en
transparang ett enda, men lockande ord: Ringkastning.
Jag beslöt mig ögonblickligen för att gå ner. Klockan var ju bara
barnet och hustru min var på teatern, vilken parentes hör till
historien. Jag såg efter i min portmonnä och fann en ensam tia,
vilken ju här med fördel skulle kunna växlas. Jag klev alltså in.
Jag började spela. Jag växlade min tia, en säkerligen ovanlig pjäs
på lokalen, och jag började vinna. Jag vet inte vilken gud, som
styrde mina fingrar, men jag kände, att om jag den kvällen varit i
Monaco, så hade fursten fått slå igen butiken. Framför mig hopades
knivar, dosor, tändsticksbehållare, blyertsetuin och andra underliga
ting. Jag studerade mellan kasten krupiärens, eller vad jag skall kalla
honom, ansikte, och jag såg, att det mulnade allt mer för varje
dyrgrip, som bytte ägare. Och då jag vunnit bortåt 50 föremål,
styrde han sina steg på min person, lutade sig över disken och
viskade med något av supplik i rösten: Kan herrn verkligen tycka, att
det är roligt längre?
— Visst fan är det roligt, så länge jag vinner! Jag har beslutat mig
för väckarklockan också, och så länge jag har en kopek i min
plånbok, skall jag spela.
Han drog sig lömskt skelande tillbaka och återgick till sitt värv att
flytta vinsterna över till min hög och ersätta de tomma nummerna
med nya juveler.
— Herrn kan ju stoppa på sig vinsterna, sade han bistert. Han såg
på klockan och tänkte på sitt lager. Hans ansiktsuttryck gingo i vågor
mellan ilska och resignation, något sådant hade han inte varit med
om, att en "herre" gjorde intrång och tillskansade sig vinster, dem
eljest mer eller mindre knäckta kunder gingo miste om. Folkmassan
omkring jublade för varje lyckat kast och jag ville ej blamera mig
med ett försök på väckarklockan, vilken jag ämnade spara till sista
kastet, d.v.s. min sista femöring.
Äntligen hade jag endast denna. Jag blev naturligtvis nog nervös
av spänningen och kastade fel. Jag måste sluta.
— Men hur skall jag få hem allt det här? frågade jag med avsikt
att skänka tillbaka hela rasket.
— Tag av sej brallorna och knyt ihop dem nedtill, men akta sej för
bylingen, då herrn smiter om hörn, svarade ringmannen på äkta
söderslang.
Jag lät tanken på återlämnandet fara och såg mig villrådig
omkring.
Då nalkades två individer, som hela tiden under livligt minspel och
uppmuntrande tillrop hade åskådat mina segrar. Den ene strök av sig
mössan med en elegant handrörelse och talade.
— Dä bra! Plocka på er det som finns och följ med. Jag bor här i
närheten.
Jag studsade — ty jag kom ihåg, att jag spelat bort hela min
förmögenhet.
Vi avtågade.
— Ser ni, gubbar, började jag ute på gatan, jag har spelat bort 10
stolpar och har inte ett korvöre, men vill ni följa med hem och ta ett
par jamare, så är det välment. För resten kan ni få hela den här
fallerallan att öppna handel med, så ni kan köpa er lite nytt i
klädväg.
— Menar hänn allvarsamt, att vi ska slå oss ner här mä dom här
söndagsgåbortkostymerna?
— Visst ska ni slå er ner, spotta och vara trevliga! Här ä cigarrer.
Jag hällde upp konjak och de drucko med ett rörande välbehag.
Spriten gav dem säkerhet och de satte sig försiktigt på divankanten.
Vi började tala om livet och jag måste erkänna, att de gåvo mig
synpunkter, som jag måste bocka mig för. Ett slags
galghumoristfilosofi, som kan försvara sin plats mycket bättre än den
väl nu avdankade Boström. Under samtalet och inverkan av
nitnaglarna, som kommo allt tätare och tätare, kom även
säkerheten. Blygheten försvann och båda vräkte sig sybaritiskt på
kamelsäckkuddarna.
Jag var verkligen litet orolig, att de skulle lämna levande spår efter
sig, men jag kunde ju inte delge dem mina farhågor.
Plötsligt reste den ene sig och började en sorts tal, vari han
tackade för att jag inte var "hög" och "kymig" och "onoslig" som
andra snobbar — (tackar så mycket) — och slutade så här: — Å
eftersom hänn exmerar oss å för resten slänger in nubben i ansiktet,
som han vore dagligt brö, så ska ja be att få lägga bort titlarna!
En idé! Jag hade ett par kostymer som jag ej behövde. Jag
frågade dem, om de ville ha vars en.
— Nej, dem får ni inte pantsätta. Ni kan ju behöva dem själva, och
då ni kan dra er fram med de där trasorna, går det väl lika bra med
hela och varma kläder.
Snart hade jag hämtat in allt som hör till två fullständiga
gentlemannakostymer. En redingote med ett par gamla frackbyxor,
en gul sommarkostym, skor, kragar med söndagsblad, halsdukar och
manschetter, och i en handvändning hade de bytt, vilket de ville göra
genast.
Då öppnas dörren och min hustru står där med hela scenen för
ögonen. I en blick fattade hon det yttre av situationen, hon kände
igen min gula kostym, såg den tomma litern på bordet, såg de
ruskiga ansiktena, över vilkas miner nubben redan brett sitt skimmer
av dåsig lass gehen. Och hon förstod, att jag återigen gjort en
dumhet. Möblerna och deras okammade hår och vad däruti var etc.
etc., och hon sträckte med en majestätisk åtbörd ut sin hand och
pekade stumt på dörren med ett så energiskt uttryck i ansiktet, att
mina gäster ögonblickligen förstodo. Själv skulle jag nog aldrig
kommit mig för att köra av dem, ty jag är så artig, ser herrskapet!
Jag följde dem nedför trapporna, under det jag bad om ursäkt för
det hastiga avslutandet av vår lilla orgie.
Men när jag nu reser över de vida fälten och igenom de folkrika
byarna och söker förstå den sjungande kraftiga fornsvenskan, får jag
ett intryck av att detta är Sveriges hjärta.
Här ligger ett allvar över de blå bergen, som jag aldrig känt
annorstädes, och då jag betraktar den av tvåtusenårig kultur
modellerade bygden tycker jag mig förstå, varför Moramännen
måste höras först av alla, då fara var å färde och pälsklädda
bågskyttar skidade genom skogarna för att mötas på kyrkvallarna.
Allvar är just ordet. Bergen, som några mil längre bort övergå till
fjäll, ha redan här en aning om fjällets form och färg över sig.
Gesundabergets buckla visar de andra bergen, att något i den stilen
måste göras för att kunna höja hjässan så att skogen blir efter.
Och i luften ligger det historia på samma sätt som jorden gömmer
pilspetsar och järnsvärd.
Vi äro på väg till Färnäs stora by. Siljans is lyser under luckorna i
de dragande snömolnen och Sollerön svartnar under ett jättemoln.
Vägen slingrar mellan gråa bodar och härbren. Släden svänger in på
en gård och om några ögonblick äro vi gäster i en gammal stuga,
där en vänlig brasa sprakar i en gammal spis och lyser på vänliga
människors ansikten. Men mest lyser den på ett rött förkläde, en
gitarr, ett vitt linntyg och en ung flickas ansikte. Bakom flickan famna
skuggorna ett hörn av rummet, och ur dunklet där låter en fiol. Och
ännu en fiol.
Skuggorna löpa efter brasans ebb och flod och färgen lever och
talar till mig. Skuggan slukar ett ansikte här, en gest där för att i
nästa ögonblick förvandlas till ljus och hela denna symfoni av
livsyttringar, ljusets och människornas, kommer mig att känna den
renaste av alla fröjder, målarglädjen.
Hur mycket vill herr konsuln och riddaren betala mig för cirka en
kvarts timme av den varan? Jag vill gärna avstå en del av min, ty
den räcker till, om jag får lov att säga det själv.
Medan fiolerna låta sitter jag bakom en stor duk. På andra sidan
duken står Zorn och målar och talar sitt hemlands tungomål. Jag
förstår ännu inte ett dugg, men det ger mig en smak av blod och
hedendom i munnen, då jag härmar det.
På en gång fylles stugan av sång och musik och jag gläder mig åt
flickans omedvetet vackra grepp på gitarren. Hon sjunger "om
sommaren sköna, när marken hon gläds" och den visan sätter mig in
i några ögonblicks stark stämning av en art, som jag inte känt sen
jag var barn. Och åter får jag en känsla av att jag sitter mitt i
Sveriges hjärta.
Och jag kan inte tröttna på att höra omkvädet:
Gud glädje och styrke de män som där bo, Gud glädje och
styrke de män som där bo vid älvom, på berg och i dalom.
Vi möta en gammal man, ett barn och en ung kvinna. Hon har
svarta ögon och svart hår och ser ut som hon hade tattarblod. Hon
slår ned ögonen och ler, då vi hälsa. O, min ungdom!
Vägen slingrar fram mellan berg och över tjärnar, där martallar
vrida sig i stränderna, medan höjderna runtomkring taggas av
torrfuror, som höja sig över den friska skogen. Det mörknar, snön
faller alltjämt. Bergen sluta högt uppe bland tunga, snödigra moln.
Zorn talar om sin fiskarstuga, som han håller på att bygga vid
älven. Den skall bli färdig till våren. Stikå-Anders faller in: — Då fåmi
nug nid prisä å sildn, då du byrå a lådim! Vilket betyder: Då få vi nog
ned sillpriset, när du börjar i vår!
Vad skall jag berätta mera? Hur människor kunna äta, vet ni, men
jag vill berätta om Drändj-Karls fiol. Drändj-Karl är en Färnäspojke,
som äger en riktig fiol och en konstnärs förmåga att sköta den. Han
märker timmer häruppe om dagarna, men på kvällen kommer fiolen
fram. Och han spelade för oss.
Det är som sagt skillnad på fioler. Somliga äro bra nästan genast
då man köpt dem på Österlånggatan, men sådana äro räknade.
Somliga äro förstås gamla och gjorda av virke ur gamla klockstaplar,
där klockringningen och darrningen gjort det omöjligt för trämask att
frodas. Andra äro beskaffade som Orsapojkens fiol. Var gång han
spelade blev det slagsmål, och vad var då naturligare än att han
dängde fiolen i skallen på den närmaste. Den gick sönder och
limmades ihop igen och efter varje slagsmål kom det bättre ljud i
honom. Men när Orsapojken blivit en gammal man och fiolen så
småningom hoplimmats av många hundratusen bitar, spelade
gubben en kväll en långdans. Och då slagsmålet började, drev han
fiolen i huvudet på närmaste gubbe, men då vart det bara sågspån
av fiolen. Ty det finns en gräns även för fioler. För människor finns
det också gränser.
— I far full emat a di då! Då far jag väl hem till dig!
Varför finns det så mycket musik i Dalarne? Det finns nog musik i
hela Sverige, men det tyckes vara en självklar sak häruppe, där alla
spela och dansa vackert och som jag inbillar mig att musik och dans
böra göras.
Vad överträffar en kväll med musik och visor och muntra historier?
Jag tänkte nu närmast på kvällarna däruppe i fäbodarna. Fjärran
från konstlade människor och växlar och telefoner, medan snön faller
över stugor och härbren, på vilkas dörrar jag läser namnen på
kullorna som levde häruppe för 400 år sedan.
Åter en kväll med Drändj-Karls fiol och sådant som ger livet värde.
Nirvana. Natt med snö. Morgon med sol och kallt.
Snart äro vi i Läde fäbodställe och rasta där. Sedan bär färden på
kända vägar tillbaka till Mora.
Ett vill jag minnas: Människornas ansikten som lyste upp för var
gång
Drändj-Karl rörde vid fiolens själ!
LOFOTEN.
Vid horisonten i väst till syd resa sig två violetta stöder ur havet.
Det är öarna Store och Lille Molla utanför Vaagö, och därinnanför
ligger Svolvær, resans närmaste mål. Utanför Bærö möter oss
Atlantdyningen, och en del av sällskapet bleknar av efter hand. Jag
kan inte hjälpa det, men en sjösjuk gör alltid ett komiskt intryck på
mig. Hans blick blir alltmer profetisk, han ser in i den fjärde eller en
ännu högre dimension, tills han plötsligt känner sig kallad och störtar
till relingen. Även den lustigaste anekdot gör intet intryck på honom.
Jag har stått vid sidan av sjösjuka, och medan deras inälvor efter
hand slukats av det giriga havet, har jag sökt ge dem en liten
ersättning och en ljusare blick på livet genom att servera dem
historier som det verkligen varit humor i, men utan resultat. Det ser
snarare ut som om humor skulle äckla dem. Men sådant är förlåtligt
häruppe, där till och med glaciärerna kalva.
Men i Svolvær mötte oss också ett annat slags kultur. I stället för
fisklevertran flöt champagne och bordeaux i stora floder, och där jag
hade väntat att en karg natur skulle medföra försakelser och
umbäranden av alla slag, föllo ripor och torsktungor (delikatess) och
sydfrukter ned som från himlen. Och älskvärda kvinnor talade om
Ellen Key och kåserade om Strindberg, Heidenstam, Hamsun, Ibsen,
Björnson, Aanrud, Kinck — medan torsken, kulturbäraren, stimmade
runt omkring Vaagö, omedveten om att det i alla fall är han som
sätter oss i stånd att äta så, dricka så och tala så.
Onsdag.
For Risvær skal der efter Forlydemle være fisket rigtig gott
optil 400.
Vad man kan förälska sig i alla grejorna på en båt och i en båt.
När de använts en tid, verka de självväxta genom nötningen och få
samma färg. Hela Nikolais båt med årtullar och åror och manskap
och tinor och allt såg ut som ett enda redskap blekt av saltvatten