Skip to content

dhananjaylatkar/go-simple-webservice

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Go: Getting Started

Modules

  • Initialize module
go mod init webserver
  • Add main.go
  • Run Module
go run webserver

Primitive Data Types

var i int // declare varible i
i = 42 // initialization

var f float32 = 3.14

firstName := "Arthur" // string

b := true // bool

c := complex(3,4) // complex number
re, im := real(c), imag(c)

Pointers

No Pointer arithmatic!

var firstName *string = new(string)
*firstName = "Arthur"

anotherName := "King"
ptr := &anotherName

Constants

const pi = 3.14151 // intialize on same line

iota and constant expressions

package main
import (
	"fmt"
)
const (
	first = iota
	second
)

const (
	third = iota
)

func main() {
	fmt.Println(first, second, third)
}

Result

0 1 0

Collection Data Types

  • Array
var arr [3]int // arr is int array with 3 elems
arr[0] = 1
arr[1] = 2
arr[2] = 3
fmt.Println(arr)
arr := [3]int{1, 2, 3}
fmt.Println(arr)
  • Slice
arr := [3]int{1, 2, 3}
slice := arr[:] // points to data that arr is keeping
arr[1] = 21
slice[2] = 41
fmt.Println(arr)
fmt.Println(slice)
slice := []int{1, 2, 3}
fmt.Println(slice)

slice = append(slice, 4, 42)
fmt.Println(slice)

s2 := slice[1:]
s3 := slice[:2]
s4 := slice[1:2]
fmt.Println(s2, s3, s4)
  • Maps
m := map[string]int{"foo": 42}
fmt.Println(m)

delete(m, "foo")
fmt.Println(m)
  • Structs
type user struct {
	ID int
	FirstName string
	LastName string
}

var u user
u.ID = 0
u.FirstName = "Dhananjay"
u.LastName = "Latkar"
fmt.Println(u)

u2 := user(ID: 1, FirstName: "Mihir", LastName: "Latkar")
fmt.Println(u2)

Functions

import "errors"
func startWebServer(port int, numberOfRetries int) (int, error) {
	return port, errors.New("Something went wrong")
}

Flow Control

  • Loops
var i int
for i < 5 {
	println(i)
	i++
	if i == 3 {
		break
		// continue
	}
}
for i := 0; i < 5; i++ {
	println(i)
}
i := 5
for {
	println(i)
}
slice := []int{1, 2, 3}
for i, v := range slice {
	println(i, v)
}
  • Panic
panic("something's wrong, I can feel it")
  • if/else
if a == b {
	println("a and b are equal")
} else if a > b {
	println("a is greater than b")
} else {
	println("a is less that b")
}
  • switch
r  := HTTPRequest{Method: "GET"}
case r.Method {
	case "GET":
		println("Get request")
	case "PUT":
		println("Put request")
		fallthrough
	case "HEAD":
		println("Head request")
	default:
		println("Unhandled request")
}

About

A simple webserver created to learn golang basics.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages