Learn Go

Go is a programming language that makes it easy to build simple, reliable, and efficient software.

Companies and DAOs like bloXroute Labs, Rated, Gelato Digital, Blocknative, Zero Hash, Flashbots, Fuel Labs, Unstoppable Domains, Status and Boba Network use Go to work on bloXroute, Rated, Blocknative, ZeroHash, Flashbots, Sway, Unstoppable Domains, Status, Boba Network and NFTPort.

Conquer the basics of Go here and go pro once you get the hang of it. Average salaries for Go developers are approximately $150k-230k/yr.

Variables are declared like this:

var port int = 8333

Or using a shorthand notation:

port := 8333

Use a regular equal sign to re-assign to a variable:

port = port + 1

Or even shorter:

port += 1

There are several types in Go:

bool

string

int  int8  int16  int32  int64
uint uint8 uint16 uint32 uint64 uintptr

byte // alias for uint8

rune // alias for int32
     // represents a Unicode code point

float32 float64

complex64 complex128

Here's what functions look like:

func GetPort() int {
  return 8333
}

port := GetPort() // `port` is now 8333

Fuctions can also return multiple values:

func GetMetadata() (string, int) {
  return "Bitcoin", 8333
}

name, port := GetMetadata()

If you don't need some of the return values, you can throw them away:

_, port := GetMetadata()

You can also make more complex structures:

type Blockchain struct {
  name string
  port int
}

blockchain := Blockchain{
  name: "Bitcoin",
  port: 8333,
}

fmt.Printf("%s runs on port %d.", blockchain.name, blockchain.port)

Structures can have their own methods:

type Blockchain struct {
  name string
  port int
}

func (b Blockchain) About() string {
  return fmt.Sprintf(
    "%s runs on port %d.",
    blockchain.name,
    blockchain.port,
  )
}

blockchain := Blockchain{
  name: "Bitcoin",
  port: 8333,
}

about := blockchain.About()
fmt.Println(about) // Bitcoin runs on port 8333.
Concurrency in Go: Tools and Techniques for Developers

If you'd like to go beyond the basics, here's a good read:

Concurrency in Go: Tools and Techniques for Developers