Golang. Simple programs for beginners


The Go language is very similar to C. Here are some simple programs.

Let’s begin… Calculate 2 to the 12th power.

package main
import "fmt"

func main () {
    a := 2 << 11
    // or use this: math.Pow(2, 12)
    fmt.Println(a)
}

Generate a random number between 1 and 21

package main
import ("fmt"; "math/rand"; "time")

func main () {
    rand.Seed(time.Now().UnixNano())
    a := rand.Intn(21) + 1 // from 1 to 21
    fmt.Println(a)
}

 


Now lets check examples from the book “An Introduction to Programming in Go” by Caleb Doxsey:

Temperature conversion from degrees Fahrenheit to Celsius (formula (F - 32) * 5/9)

package main

import "fmt"

func main () {
	var input float64

	fmt.Print("Enter temperature in F: ")
	fmt.Scanf("%f", &input)

	input = (input - 32) * 5/9

	fmt.Println("It will be", input, "Celsius")
}

Translation of feet to meters (1 f = 0.3048 m).

package main

import "fmt"

func main () {
	var input float64

	fmt.Print("Enter lenght in feet: ")
	fmt.Scanf("%f", &input)

	input *= 0.3048

	fmt.Println("It will be", input, "meters")
}

Output numbers from 1 to 100 that are divisible by 3 (3, 6, 9, 12, …).

package main

import "fmt"

func main () {

	for i := 1; i <= 100; i++ {
		if i % 3 == 0 {
		fmt.Println(i)
		}
	}
}

Output numbers from 1 to 100, but for multiples of three you must output “Fizz” instead of a number, for multiples of five – “Buzz”, and for multiples of both three and five – “FizzBuzz”.

package main

import "fmt"

func main () {

	for i := 1; i <= 100; i++ {
		if i % 3 == 0 && i % 5 == 0 {
			fmt.Println("FizzBuzz")
		} else if i % 3 == 0 {
			fmt.Println("Fizz")
		} else if i % 5 == 0 {
			fmt.Println("Buzz")
		} else {
			fmt.Println(i)
		}
	}
}

By the way, you can output the first condition as %15 or concatenate 🙂


Print all letters from A to Z

package main

import (
	"fmt"
)

func main() {

	for i := 0; i < 26; i++ {
		fmt.Printf("%c", 65+i)
	}

}

The next task is as follows: find the smallest element in the list

x := []int{
    48,96,86,68,
    57,82,63,70,
    37,34,83,27,
    93,94,99,97,
}

Solution:

package main

import "fmt"

func main() {

	x := []int{
		48,96,86,68,
		57,82,63,70,
		37,34,83,27,
		93,94,99,97,
	}

	tiny := x[0]

	for _, n := range x {
		if n < tiny {
			tiny = n
		}
	} 

	fmt.Println(tiny)
}

Also you can use lib sort.Ints() 🙂


Next… Write a sum function that would take a slice of the numbers and add them together.

package main

import "fmt"

func sum(nums ... int) int {

    total := 0

    for _, i := range nums {
        total += i
    }

    return total
}

func main() {

    slice := []int{1, 3, 5, 7}

    x := sum(slice...)

    fmt.Println(x)
}

Write a function that takes an integer and divides it in half and returns true if it was even, or false if it was odd. For example, half(1) should return (0, false), and half(2) should return (1, true).

package main

import "fmt"
func split (i int) (int, bool) {
    
    if i % 2 == 0 {
        return 1, true
    } else {
        return 0, false
    }
}


func main () {
    var input int

    fmt.Print("Enter number to split it and check is it even/odd: ")

    fmt.Scanf("%d", &input)

    fmt.Println(split(input))
}

Write a function with a variable number of parameters that finds the largest number in the list.

package main

import "fmt"

func big (nums ... int) int {

    x := 0

    for _, i := range nums {
        if i > x {
            x = i
        }
    }
    return x
}


func main () {

    slice := [] int {11, 1, 111, 12, 22, 32}

    fmt.Println(big(slice ...))
}

Using the makeEvenGenerator function as an example, write a makeOddGenerator that generates odd numbers. Here is the makeEvenGenerator function:

func makeEvenGenerator() func() uint {
    i := uint(0)
    return func() (ret uint) {
        ret = i
        i += 2
        return
    }
}
func main() {
    nextEven := makeEvenGenerator()
    fmt.Println(nextEven()) // 0
    fmt.Println(nextEven()) // 2
    fmt.Println(nextEven()) // 4
}

Solution: change the variable at the beginning of the function 


Swap two numbers. For example, x := 1; y := 2; swap(&x, &y) should give x = 2 and y = 1.

package main

import (
	"fmt"
)

func swap (x *int, y *int) {

    tmp := *x
    *x = *y
    *y = tmp

    // in Go you can do this: *x, *y = *y, *x
}

func main() {

    x := 1
    y := 2

    swap(&x, &y)
    fmt.Println(x, y)
}

Sum the digits of a given number, eg 12345 sum will be 15 (1+2+3+4+5)

package main

import "fmt"

func main() {
	n := 12345
	var sum int

	for n > 0 {
		sum += n % 10
		n /= 10
	}

	fmt.Println(sum)

}

Program which repeats your input (like echo in mountains)

package main

import (
	"fmt"
)

func main() {

	var s string

	for {
		fmt.Scanf("%s", &s)
		if s != "" {
			fmt.Println("... ... ", s)
		}
		if s == "exit" {
			break
		}
		s = ""
	}
}

 

 


This entry was posted in Go (en). Bookmark the permalink.

Leave a Reply

🇬🇧 Attention! Comments with URLs/email are not allowed.
🇷🇺 Комментарии со ссылками/email удаляются автоматически.