Movatterモバイル変換


[0]ホーム

URL:


Skip to content
DEV Community
Log in Create account

DEV Community

/[Abejide Femi Jr]\s/
/[Abejide Femi Jr]\s/

Posted on • Edited on

     

Switching from JavaScript to Golang

Image
Image Source

Coming from a JavaScript background, I have always wanted to learn a static-typed programming language, earlier this year I picked up Golang after reading the reviews about the language, Golang is backed by Google. Oh, and of course popular DevOps tools such as Docker, Kubernetes, Terraform, are built with Golang, in this article I will be taking you through basic programming in Golang and Javascript.

Variables

Javascript

In Javascript variables can be declared using thelet, const(ES6), andvar(ES5) keyword.

// using the const keywordconsta=10// using the let keywordletb=10// using the var keywordvarc=10console.log(a,b,c)// returns 10, 10, 10
Enter fullscreen modeExit fullscreen mode

Javascript Variable Playground

Golang

In Go variables can be declared using thevar,const keyword and also using theshort variable declaration syntax.

// using the var keywordvara=10// go detects the type here even though we don't specifyfmt.Println(a)// returns 10fmt.Printf("variable a is of type: %T\n",a)// returns int// using the const keywordconstb=20// It is important to note that the value of b must be known at compile-timefmt.Println(b)// returns 20// variable decalred but not assgined a value returns the zero value of the typevarcboolfmt.Println(c)// returns the zero value(zero value of a boolean is false)// using the short variable declaration syntaxd:="this is a variable"// go detects the type of this variablefmt.Println(d)// returns this is a variablefmt.Printf("d is of type: %T\n",d)// returns the type(string)
Enter fullscreen modeExit fullscreen mode

Go Variable Playground

Arrays

An array is a collection of items.

Javascript

In Javascript arrays are dynamic, items can be added and removed from the array, also Javascript being a loosely-typed language, it can hold values of different type in the array.

letmyArray=[1,"this is array",true,100.30]console.log(myArray)// returns [1, "this is array", true, 100.30]// we can remove the last item in an array using the pop methodmyArray.pop()console.log(myArray)// returns [1, "this is array", true]// we can add to the end of the array using the push methodmyArray.push(20)console.log(myArray)// returns [1, "this is array", true, 20]// we can remove the first item of the array using the shift methodmyArray.shift()console.log(myArray)// returns ["this is array", true, 20]// we can add to the start of the array using the unshift methodmyArray.unshift(210)console.log(myArray)// returns [210, "this is array", true, 20]
Enter fullscreen modeExit fullscreen mode

Javascript Array Playground

Golang

Arrays are of fixed length in Go, you can't add nor remove from an array, also an array can only contain the specified type.

a:=[5]string{"a","b","c","d","e"}// length is 5fmt.Println(a)// returns [a b c d e]// But what happens if we don't specify exactly 5 itemsb:=[5]string{"a","b","c"}fmt.Printf("%#v",b)// returns [5]string{"a", "b", "c", "", ""}// "" represents the zero value(zero value of a string is "")
Enter fullscreen modeExit fullscreen mode

Go Array Playground
In Golang we also haveslices, they are dynamic and we don't need to specify the length, values can be added and removed from aslice.

a:=[]string{"a","b","c"}fmt.Printf("%#v",a)//  returns []string{"a", "b", "c"}// adding to a slice, we can use the append method to add an item to a slicea=append(a,"d")// append takes in the the array and the value we are addingfmt.Printf("%#v",a)// returns []string{"a", "b", "c", "d"}// removing from a slice by slicinga=append(a[0:3])// 0 represents the index, while 3 represents the positionfmt.Printf("%#v",a)// returns []string{"a", "b", "c"}// slices can also be created using the make method(in-built)// the first value is the type, the second and the third value is the length and maximum capacity of the sliceb:=make([]string,3,5)fmt.Printf("length of b is:%#v, and cap of b is:%#v\n",len(b),cap(b))// returns length of b is:3, and cap of b is:5
Enter fullscreen modeExit fullscreen mode

Slice Playground

Function

Javascript

In Javascript a function expression can be written using thefunction keyword,arrow function(ES6) can also be used.

// using the function keywordfunctiona(value){returnvalue}constval=a("this is the value")console.log(val)// using arrow functionconstb=((value)=>value)constval2=b("this is another value")console.log(val2)
Enter fullscreen modeExit fullscreen mode

Javascript Function Playground

Golang

Using thefunc keyword, a function expression can be written in go.

funca(){fmt.Println("this is a function")}a()// returns "this is a function"// parameters and return type can also be specifiedfuncb(a,bint)int{// takes in value of type int and returns an intresult:=a*breturnresult}val:=b(5,6)fmt.Println(val)// returns 30
Enter fullscreen modeExit fullscreen mode

Go Function Playground

Objects

Javascript

In JavaScript we can write Objects by specifying the key and the value in curly braces separated by a comma.

constmusic={genre:"fuji",title:"consolidation",artist:"kwam 1",release:2010,hit:true}console.log(music)// returns {genre: "fuji", title: "consolidation", artist: "kwam 1", release: 2010, hit: true}
Enter fullscreen modeExit fullscreen mode

Javascript Object Playground

Golang

In Golang there isStructs which holds a field and the field type

typeMusicstruct{genrestringtitlestringartiststringreleaseinthitbool}ms:=Music{genre:"hiphop",title:"soapy",artist:"naira marley",release:2019,hit:true,}fmt.Printf("%#v\n",ms)// returns main.Music{genre:"hiphop", title:"soapy", artist:"naira marley", release:2019, hit:true}
Enter fullscreen modeExit fullscreen mode

Go Struct Playground

Helpful Golang resources

Tour of go
Complete go bootcamp
RunGo
gobyexample

Top comments(15)

Subscribe
pic
Create template

Templates let you quickly answer FAQs or store snippets for re-use.

Dismiss
CollapseExpand
 
joshsea profile image
josh-sea
Mechanical Engineer, Flatiron School Grad, Dev interested in learning all the things.
  • Location
    new york
  • Work
    Quality assurance engineer
  • Joined

Not planning to learn go currently but love how you laid out how they overlap. Would love to see more tutorials like this, essentially basic components of a language in comparison to a language one currently knows, i.e. here is an array in ruby and this is what arrays are like in javascript... etc. Would help facilitate learning!

CollapseExpand
 
josemunoz profile image
José Muñoz
🇭🇳 Honduran Software Engineer. I love solving problems with coding. All opinions are my own.
  • Email
  • Location
    Vancouver, BC
  • Pronouns
    He/Him
  • Work
    Software Developer @ Amazon
  • Joined

I am not sure Google backing is a plus

CollapseExpand
 
cpustejovsky profile image
Charles Clinton Pustejovsky III
I am passionate about providing value with programming. I use Go, Test-Driven Development, and SDLC methodologies to do this. I focus on empathy, honing current skills, and filling in gaps to improve.

From a realistic standpoint, having a behemoth like Google backing it helps with longevity and adoption. See C# and Java as examples of this.

CollapseExpand
 
josemunoz profile image
José Muñoz
🇭🇳 Honduran Software Engineer. I love solving problems with coding. All opinions are my own.
  • Email
  • Location
    Vancouver, BC
  • Pronouns
    He/Him
  • Work
    Software Developer @ Amazon
  • Joined

don't fall for the big company illusion, Google has a track record of killing good projects:killedbygoogle.com/

CollapseExpand
 
yourtechbud profile image
Noorain Panjwani
I'm a cloud enthusiast who absolutely loves serverless computing.
  • Location
    Mumbai
  • Work
    Founder at Space Up Technologies
  • Joined
• Edited on• Edited

The main reason to adopt go is its concurrency model. Go uses a concept ofGreen Threads which it callsgoroutines. Thesegoroutines lets you perform blocking calls (like network operations) without having to block the underlying OS thread! Greatly simplifies concurrency in a multi-threaded environment.

It would be really nice if you could mention that as well.

 
felicianotech profile image
Ricardo N Feliciano
Community Engineer at CircleCI (formerly Developer Evangelist at CircleCI and Linode). U.S. Navy Veteran, Write the Docs NYC organizer. Mets fan for life.
  • Location
    New York City
  • Work
    Community Engineer at CircleCI
  • Joined

Don't fall for hype.

Google can't "kill" Go because Go is an open source language entrenched in a world-wide community.

Thread Thread
 
careuno profile image
Carlos Merchán
  • Location
    Andalusia, Spain
  • Joined

Where all decisions are taken by them without listening the community

Thread Thread
 
freedom profile image
Freedom
  • Joined
• Edited on• Edited

Had that impact your decision before you even tried to use Go for your research purpose? If you have probably not even touch Go, perhaps, try it without the noise or negative opinions you heard in the community. Does it make your learning process or projects a lot challenging? Once I tried and found it's exactly what Go can do for my backends... and the next release 1.14 onwards will get more performant in certain areas that we thought it was already fast, there more to optimize.

Because some community said so should not impact the curious minds, you are a different individual, live in different countries and it's what you can do for your community with your creative inspirations and ideas just like your avatar.

There is no hype in Go language and it's a time saver with cross-compile binaries.

Remember, products can get obsolete, programming language does not, or C/C++/Ruby/etc would have been obsolete. It's not, because the Go's performance and productivity makes it worthwhile to invest that can replace many small different tasks and CI/CD.

Now "Defer" in v1.14 costs an extra 1 nanosecond compare to normal method calls without defer keyword, that's crazy fast.

Thread Thread
 
careuno profile image
Carlos Merchán
  • Location
    Andalusia, Spain
  • Joined

I'm working moving some nodejs code to go because of performance and ease of code reading. What I'm missing are generic and I'm sure many people like me want this feature implemented in go. I know that they have their reasons to not implement generics, but it was a reason that the community is angry with google.

It's a Google language and they do whatever they consider better.

CollapseExpand
 
uby profile image
Ulf Byskov
  • Joined
• Edited on• Edited

IMO the only good thing about Go is go routines.
The simplicity of the language causes you to write too much boiler plate.
For example the need to haveif err != nil { simply because there are no exceptions.

CollapseExpand
 
lluismf profile image
Lluís Josep Martínez
  • Joined

I suspect it's the only language for you :-)

CollapseExpand
 
codelitically_incorrect profile image
codelitically_incorrect
The wisdom of architecture
  • Location
    U.S.A
  • Work
    UI Architect at (Private)
  • Joined

This ain't ever gonna happen. Google indoctrination to the fullest it's for the left.

CollapseExpand
 
jsrios profile image
jsrios
Go | Angular | GCP
  • Location
    New York
  • Work
    Software Engineer II
  • Joined

Great tutorial. I foundquii.gitbook.io/learn-go-with-tests/ to be a great resource for picking up Go if you want to check it out.

CollapseExpand
 
bjhaid_93 profile image
/[Abejide Femi Jr]\s/
passionate javascript dev

yeah, it is nice, added it to the helpful resources.

CollapseExpand
 
jackyeoh profile image
Jackyeoh
Javascript and game dev enthusiast. Also loved dogs!
  • Location
    Malaysia
  • Work
    Software Engineer
  • Joined

Great article! I wish I’d found this article earlier as it could save me so much time poking around golang!

I’ve recently been trying to transfer some work done in js into golang and I’ve found that the major obstacle when it comes to switching between js and golang is on how you model your data.

For example, one of the very common use case is if I wanted to store different data in an array. You can do this very easily in js and even in some other static type language like java thru class inheritance. However, golang doesn’t fully support inheritance, which could drastically impact how we design our data model. Though you might want to add this in as personally felt that this is quite important.

Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment'spermalink.

For further actions, you may consider blocking this person and/orreporting abuse

passionate javascript dev
  • Location
    lagos
  • Joined

More from/[Abejide Femi Jr]\s/

DEV Community

We're a place where coders share, stay up-to-date and grow their careers.

Log in Create account

[8]ページ先頭

©2009-2025 Movatter.jp