GMashtalyar

How tos

.

go mod init project_name
go build
This will generate the go.mod file

go get -u github.com/go-sql-driver/mysql
go get -u github.com/gin-gonic/gin
go get -u gorm.io/gorm
go get -u form.io/driver/postgres

go run main.go

package main

import "fmt"

func main() {
	var age = 12 // var age int = 12
	var num = 2.3456
	var str = "hello world"
	fmt.Println(age, num, str)

	var a = 10
	var b = 5
	var res int
	res = a % b
	fmt.Println("Result is", res)

	const pi = 3.14 // can't be changed
	fmt.Println(pi)

	var web string = "FinTechDocs"
	fmt.Println(len(web))
	fmt.Println(web + " is cool \nwebsite")

	// Printf
	var num2 float64 = 4.323423
	fmt.Printf("%f\n", num2)
	fmt.Printf("%.2f\n", num2)
	fmt.Printf("%T\n", num2)
	var isDone bool = true
	fmt.Printf("%T\n", isDone)
	fmt.Printf("%t\n", isDone)

	// if else
	var age2 = 8
	if age2 < 5 {
		fmt.Println("it's time to go to kindergarden")
	} else if age2 == 5 {
		fmt.Println("it's time to go to preschool")
	} else if (age2 > 5) && (age2 <= 18) {
		var grade = age2 - 5
		fmt.Println("It's time to go to ", grade, " grade")
	} else {
		fmt.Println("You have to work")
	}

	// switch case
	var age3 = 10
	switch age3 {
	case 5:
		fmt.Println("You're 5 years old")
	case 15:
		fmt.Println("You're 15 years old")
	case 10:
		fmt.Println("You're 10 years old")
	default:
		fmt.Println("Your age is unknown")
	}

	// for loop
	var i = 10
	for i > 0 {
		fmt.Println(i)
		i--
	}

	for i := 0; i <= 5; i++ {
		fmt.Println(i)
	}

	// arrays
	var arr [3]int
	arr[0] = 45
	arr[1] = 97
	arr[2] = 75
	fmt.Println(arr[1])

	nums := [3]float64{4.23, 5.23, 98.1}
	for i, value := range nums {
		fmt.Println(value, i)
	}

	// maps
	webSites := make(map[string]float64)
	webSites["FinTechDocs"] = 0.8
	webSites["SimpleBoard"] = 0.9
	fmt.Println(webSites["SimpleBoard"])

	// functions
	var aa = 29
	var bb = 1
	aa, bb = summ(aa, bb)
	fmt.Println(aa, bb)

	// замыкания
	var numm = 3
	multiply := func() int {
		numm *= 2
		return numm
	}
	fmt.Println(multiply())

	// откладывания
	defer two()
	one()

	// pointers * and &
	var x = 0
	pointer(&x)
	fmt.Println(x)

	// structs
	bob := Cats{"Bob", 7, 0.75}
	fmt.Println("Bob age is", bob.age)
	fmt.Println("Bob function is", bob.test())
}

func summ(num_1 int, num_2 int) (int, int) {
	var res int
	res = num_1 + num_2
	return res, num_1 * num_2
}

func one() {
	fmt.Println("1")
}

func two() {
	fmt.Println("defered funciton")
}

func pointer(x *int) {
	*x = 2
}

type Cats struct {
	name      string
	age       int
	happiness float64
}

func (cat *Cats) test() float64 {
	return float64(cat.age) * cat.happiness
}