diff options
| author | Syndamia <kamen.d.mladenov@protonmail.com> | 2021-07-03 11:15:01 +0300 |
|---|---|---|
| committer | Syndamia <kamen.d.mladenov@protonmail.com> | 2021-07-03 11:15:01 +0300 |
| commit | 3d0c7acd82c6955655fff7286f4f2ee8f8df5008 (patch) | |
| tree | 245e553524e78fd5a8d3b9afb66fc0ab26f583fc /Go | |
| parent | c97bf5c6e573b7b987a34ae4b41440dd849010b4 (diff) | |
| download | Self-learning-3d0c7acd82c6955655fff7286f4f2ee8f8df5008.tar Self-learning-3d0c7acd82c6955655fff7286f4f2ee8f8df5008.tar.gz Self-learning-3d0c7acd82c6955655fff7286f4f2ee8f8df5008.zip | |
Started learning go and created a basics file
Diffstat (limited to 'Go')
| -rw-r--r-- | Go/tutorial.go | 149 |
1 files changed, 149 insertions, 0 deletions
diff --git a/Go/tutorial.go b/Go/tutorial.go new file mode 100644 index 0000000..8230d13 --- /dev/null +++ b/Go/tutorial.go @@ -0,0 +1,149 @@ +package main + +// import "fmt" +import ( + "bufio" + "fmt" + "os" + "strconv" +) + +func main() { + arrays() +} + +func arrays() { + var arr [5]int // fills with default value + arr[2] = 5 + fmt.Println(arr) // properly prints whole array + + arr2 := []int{1, 2, 3} + arr3 := [5]int{1, 2, 3} + fmt.Println(arr2, arr3, len(arr2)) + + arr2d := [][]int{{1, 2}, {10, 20}} + fmt.Println(arr2d) + + bigarr := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9} + smallerArr := bigarr[:] + fmt.Println(smallerArr) + smallerArr1 := bigarr[4:] + fmt.Println(smallerArr1) + smallerArr2 := bigarr[:2] + fmt.Println(smallerArr2) + smallerArr3 := bigarr[4:6] // start index:end index + fmt.Println(smallerArr3) + + var a []int = []int{1, 2, 3} + b := append(a, 4, 5, 6) + fmt.Println(b) + + for k, elem := range bigarr { // equivalent to: for k := 0; k < len(bigarr); k++ + fmt.Println(k, elem) + } + + for _, elem := range bigarr { // equivalent to this C# code: foreach(var elem in bigarr) + fmt.Println(elem) + } +} + +func loops() { + i = 0 + for i < 5 { + fmt.Println(i) + i++ + } + + for { + if i == 8 { + break + } else if i%2 == 0 { + fmt.Println(i) + } + i++ + } + + for j := 0; j < 5; j++ { + fmt.Println(j) + } +} + +func conditionals() { + age := 21 + if driving_age := 18; age < driving_age { + fmt.Println("You cannot drive!") + } else if age < 16 { + fmt.Println("You cannot use this app!") + } else { + fmt.Println("You're good") + } + + n := 5 + switch n { + case 1: + fmt.Println("Very cool") + case 4: + fmt.Println("Not cool") + default: + fmt.Println("Bruh") + } + + switch { + case n > 3: + fmt.Println("Yay") + default: + fmt.Println("Nay") + } +} + +func input() { + scanner := bufio.NewScanner(os.Stdin) + + fmt.Printf("Type age: ") + scanner.Scan() + + userInput := scanner.Text() // Always string, duuh + // Variable, base (binary, octal, decimal, ..), integer size (8, 16, 32, 64, ..) + // _ is an anonymous variable, so it doesn't get anywhere. Second returned variable is error + // Bitsize 0 is normal int + age, _ := strconv.ParseInt(userInput, 10, 0) + + fmt.Printf("You were born in %d!", 2021-age) + +} + +var i int + +func variablesAndPrinting() { + var msg string + msg = "Hello World!" + + test := 5.98 + var num int = int(test) + num += 4 + num++ + + str := "Yoo" + var str1 = "Bruh" + + //var v1, v2, v3 int = 45, 2342, 6634 + //v4, v5, v6 = 6653, true, "nafd" + + fmt.Println(msg, num) // Prints both with space in between + fmt.Print(str, str1) + fmt.Println() + /* %T - type + * %v - value + * %% - escape % character + * %t - prints bool + * %b, %o, %d, %x - format int as base 2, 8, 10 and 16 repsectively + * %e, %f, %g - format float as scientific notation, decimal no exponent (cuts of number) or large exponent (full number) respectively + * %f - default width, default precision; %9f - width of 9, default precision; %.2f - default width, precision 2; %9.f - width of 9, precision 0; %9.2f - width of 9, precision 2; + - width forces certain string length (use negative number to add spaces to the right), it works with %s and %q also (%-9q) + * %d - pads a number with a given digit, so %07d with force width of 7 and add 0s to the number + * %s, %q - show string or show string with quotes + */ + fmt.Printf("%T", num) // Prints type + out := fmt.Sprintf("%v %b", str, num) + fmt.Println(out) +} |
