Skip to content

Consolidates useful formulas for starters of golang programming

License

Notifications You must be signed in to change notification settings

MakMoinee/go-mith

Folders and files

NameName
Last commit message
Last commit date

Latest commit

author
Mak Moinee
Oct 11, 2024
a5ac93c · Oct 11, 2024

History

62 Commits
Jun 4, 2023
Jul 21, 2022
Oct 11, 2024
Aug 21, 2021
Aug 21, 2021
Jun 4, 2023
Sep 29, 2024
Aug 28, 2023

Repository files navigation

Go-Mith Go Report Card

Features

  • Consolidates useful formulas for starters of golang programming

Packages

  • Palindrome - checks if the value given is palindrome or not
  • Power Formula - One of the science formula. It's used to calculate the power from a given work and time values
  • Stair Case (Hacker Rank Solution) - prints a staircase of size n.
  • Concurrency Package - useable interface for any concurrent calls.
  • Goserve Package - build http service to start your API with the support of injecting certs and reading config from settings.yaml
  • Email - send email by using our prebuilt function, no need to code manually for email just instantiate the package and pass the required paramaters and it should work

Installation

  • go get github.com/MakMoinee/go-mith

Sample Code

import (
	"fmt"

	"github.com/MakMoinee/go-mith/pkg/palindrome"
)

func main() {
	fmt.Println("Starting main.go")

	// Testing palindrome

	// Pass Palindrome Number
	num1 := 121
	fmt.Println(palindrome.IsNumberPalindrome(num1)) // It must print true

	str1 := "aabbaa"
	fmt.Println(palindrome.IsStringPalindrome(str1)) // it must print true
}

Stair Case

import (
	"fmt"

	"github.com/MakMoinee/go-mith/pkg/manipulate"
)

func main() {
	fmt.Println("Starting main.go")

	num2 := 2
	manipulate.GetStairCase(int32(num2))
}
  • Result:
      #
     ##
    ###
   ####
  #####
 ######
#######

Concurrent Package

package main

import (
	"fmt"
	"sync"

	"github.com/MakMoinee/go-mith/pkg/concurrency"
)

func main() {
	// default concurrent sample
	var wg sync.WaitGroup
	wg.Add(1)
	go func() {
		defer wg.Done()

		// initialize concurrent service
		concurrentService := concurrency.NewService()

		// ProcessItem - dynamically process item passed on the function.
		// Current supported data types are: []string, []int
		// TODO: int, string
		data, err := concurrency.ProcessItem(1, []string{"1", "2"}, concurrentService)
		if err != nil {
			fmt.Errorf(err.Error())
		}
		fmt.Println("[]string >>", data)
	}()
	wg.Wait()
}

goserve package

package main

import (
	"log"

	"github.com/MakMoinee/go-mith/pkg/goserve"
)

func main() {
	httpService := goserve.NewService(SERVER_PORT)
	httpService.EnableProfiling(SERVER_ENABLE_PROFILING)
	log.Println("Server Starting in Port ", SERVER_PORT)
	if err := httpService.Start(); err != nil {
		panic(err)
	}
}

email package

package main

import (
	"log"

	"github.com/MakMoinee/go-mith/pkg/email"
)

func main() {
	emailService := email.NewEmailService(587, "emailHost", "emailAddress", "emailAppPass")

	isEmailSent, err := emailService.SendEmail("receiverEmail", "emailSubject", "emailMessage")
	if err != nil {
		log.Fatalf("Error sending email: %s", err)
	}

	if isEmailSent {
		log.Println("Email Send Successfully")
	} else {
		log.Println("Failed to send email")
	}
}