Skip to content

Instantly share code, notes, and snippets.

@shahnCM
Created June 1, 2023 21:30
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save shahnCM/bf501ab8fe9be825a1b2ee7e69b5b75a to your computer and use it in GitHub Desktop.
Save shahnCM/bf501ab8fe9be825a1b2ee7e69b5b75a to your computer and use it in GitHub Desktop.
Some GoLang programs to get you started
package main

import (
	"fmt"
	"math"
	"strings"
)

func main() {

	//strings
	fmt.Println("strings >>")

	var nameOne string = "Sample String" // STRINGS ARE DOUBLE QUOTES
	var nameTwo = "Another String"
	var nameThree string

	nameThree = "Something Else"
	nameX := "Mr. X" // Can not use this way outside main function

	fmt.Println(nameOne, nameTwo, nameThree, nameX)

	// ints
	fmt.Println("ints >>")

	var ageOne int = 20
	var ageTwo = 30
	ageThree := 40

	fmt.Println(ageOne, ageTwo, ageThree)

	// bits & memory
	fmt.Println("bits & memory >>")

	var numOne int8 = 32
	var numOneMinus int8 = -128
	var numUnsigned uint8 = 255

	fmt.Println(numOne, numOneMinus, numUnsigned)

	// floats
	fmt.Println("floats >>")

	var scoreOne float32 = 25.200
	var scoreTwo float64 = 25787987879878978978789798743242343243242343432423434234324234324324324234.200
	scoreThree := 34234324.3423432

	fmt.Println(scoreOne, scoreTwo, scoreThree)

	// fmt package
	fmt.Println("fmt package ('%v' or '%_' is just format specifier, '%q' is for quotes & '%T' is for displaying types, '%f' is for floats)>>\n")

	fmt.Print("Hello \n")
	fmt.Print(" World !")

	var name string = "Mr. X"
	var age int8 = 25

	fmt.Print("\nMy name is ", name, "\nMy age is ", age, "\n")
	fmt.Printf("Formatted String:\nMy name is %v,\nMy age is %v \n", name, age)
	fmt.Printf("You have scored: %f \n", 22.22)
	fmt.Printf("You have scored: %0.10f \n", 22.22)
	fmt.Printf("You have scored: %0.1f \n", 22.22)

	// Sprintf (Save formatted string so that we use it later on)
	fmt.Println("Sprintf (Save formatted string so that we use it later on) >>")

	var str string = fmt.Sprintf("SprintF :\nMy name is %v,\nMy age is %v \n", name, age)

	fmt.Println(str)

	// Arrays
	fmt.Println("Arrays >>")

	// Arrays in GO has fixed length
	var arr [3]int = [3]int{100, 200, 300}
	var handyArr = [4]int{10, 20, 30}
	handyArr[3] = 40

	fmt.Println(arr[0])
	fmt.Println(arr, len(arr), handyArr, len(handyArr))

	// Slices
	fmt.Println("Slices: (Uses arrays under the hood) >>")

	var strSlice = []string{"a", "b", "c", "d"}
	strSlice = append(strSlice, "e")

	fmt.Println(strSlice)

	// Ranges
	fmt.Println("Ranges (We can get Ranges both from Arrays & Slices) >>")
	var sliceRangeFromSliceOne2Three []string = strSlice[1:3]
	fmt.Println(sliceRangeFromSliceOne2Three)

	var sliceRangeFromSliceUp2Three []string = strSlice[:3]
	fmt.Println(sliceRangeFromSliceUp2Three)

	var sliceRangeFromSliceAfterTwo []string = strSlice[1:]
	fmt.Println(sliceRangeFromSliceAfterTwo)

	// Loops
	fmt.Println("\nLOOP: >>")

	// For like While
	var x int = 0
	for x < 5 {
		fmt.Println("Looping now From Like While: ", x)
		x++
	}

	// For Tradetional
	for x := 0; x < 5; x += 2 {
		fmt.Println("Looping now From Tradetional Loop: ", x)
	}

	// For Each
	for itemIndex, itemValue := range strSlice {
		fmt.Println("Item Index is: ", itemIndex, "Item Value is: ", itemValue)
	}

	// WithOut Index
	for _, itemValue := range strSlice {
		fmt.Println("Only Item Value is: ", itemValue)
	}

	// WithOut Value
	for index, _ := range strSlice {
		fmt.Println("Only Item Index is: ", index)
	}

	/**
	 * Conditions
	 * if cond1 && cond2 || cond3 { }
	 */

	// Condition
	if 2 < 3 {
		fmt.Println("2 is less than 3")
	}

	// Functions
	coverUp([]string{"a", "b", "c"}, sayHi)

	fmt.Printf("Circle Area %f \n", circleArea((6.2)))

	// var fn string var sn string
	fn, sn := getInitials("Tony Stark")
	fmt.Printf("fn %v, sn %v", fn, sn)
}

func sayHi(n string) {
	fmt.Printf("Hello Hi Bye Bye %v \n", n)
}

func coverUp(n []string, f func(string)) {
	for _, itemValue := range n {
		f(itemValue)
	}
}

func circleArea(r float64) float64 {
	return math.Pi * r * r
}

// Multiple Return
func getInitials(n string) (string, string) {
	var s string = strings.ToUpper(n)
	var names []string = strings.Split(s, " ")
	var initials []string

	for _, v := range names {
		initials = append(initials, v[:1])
	}

	if len(initials) > 1 {
		return initials[0], initials[1]
	}

	return initials[0], "_"

}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment