joplin-notes/joplin notion extension/Web Development/Go/snippets.md
2026-11-04 00:33:23 +05:30

3.4 KiB

snippets

js to go mappings js-to-go.html js-to-go_1.html

0a884ef560d394637c84d895100507f1.png

tracking time

package main

import (
	"fmt"
	"time"
)

func myExpensiveFunction() {
	// 1. Tracks starting time and defers the calculation
	defer func(start time.Time) {
		fmt.Printf("Function took: %v\n", time.Since(start))
	}(time.Now())

	// 2. Your actual function logic here
	time.Sleep(100 * time.Millisecond) 
}

func main() {
	myExpensiveFunction()
}

for printing tabular data

package main

import (
	"fmt"
	"os"
	"text/tabwriter"
)

func main() {
	// Initialize tabwriter: output, minwidth, tabwidth, padding, padchar, flags
	w := tabwriter.NewWriter(os.Stdout, 1, 1, 3, ' ', 0)

	// Print the header row (terminate columns with \t and rows with \n)
	fmt.Fprintln(w, "ID\tNAME\tROLE\tSTATUS\t")

	// Print data rows
	fmt.Fprintln(w, "1\tAlice Vance\tDeveloper\tActive\t")
	fmt.Fprintln(w, "2\tBob Miller\tManager\tAway\t")
	fmt.Fprintln(w, "105\tCharlie\tDesigner\tOffline\t")

	// Flush to format and output everything to the console
	w.Flush()
}

for env file parsing

package main

import (
    "log"
    "github.com/joho/godotenv"
)

func main() {
    // Loads .env file into os.Environ()
    err := godotenv.Load()
    if err != nil {
        log.Fatal("Error loading .env file")
    }
}   

or without external library

package main

import (
    "bufio"
    "fmt"
    "log"
    "os"
    "strings"
)

func loadEnvFile(path string) error {
    f, err := os.Open(path)
    if err != nil {
        return err
    }
    defer f.Close()

    scanner := bufio.NewScanner(f)
    for scanner.Scan() {
        line := strings.TrimSpace(scanner.Text())

        // skip empty lines and comments
        if line == "" || strings.HasPrefix(line, "#") {
            continue
        }

        // strip optional "export " prefix
        line = strings.TrimPrefix(line, "export ")

		// for inline comments
		if strings.HasPrefix(line, `"`) || strings.HasPrefix(line, `'`) {
			// quoted — keep everything between the quotes
			line = strings.Trim(line, `"'`)
		} else {
			// unquoted — cut at first " #" (space + hash)
			if idx := strings.Index(line, " #"); idx != -1 {
				line = strings.TrimSpace(line[:idx])
			}
		}


        key, value, found := strings.Cut(line, "=")
        if !found {
            continue
        }

        key = strings.TrimSpace(key)
        value = strings.TrimSpace(value)

        // strip surrounding quotes
        value = strings.Trim(value, `"'`)

        os.Setenv(key, value)
    }
    return scanner.Err()
}

func main() {
    if err := loadEnvFile(".env"); err != nil {
        log.Fatal(err)
    }
    fmt.Println(os.Getenv("DB_HOST"))
}   

 

for timestamps

import (
    "fmt"
    "time"
)

func main() {
    unixTimestamp := int64(1615460256)
    t := time.Unix(unixTimestamp, 0)
    isoString := t.Format(time.RFC3339)
	// or for readibility
	// timeISOString := time.Time.Local(t).String() 
	// or for gmt
	// timeISOString := time.Time.UTC(t).Format(http.TimeFormat)
    fmt.Println(isoString) // Output: 2021-03-11T06:17:36Z
}   

for milli sec one

    unixMillis := int64(1615460256000)
    t := time.Unix(unixMillis/1000, (unixMillis%1000)*int64(time.Millisecond))
    fmt.Println(t.Format(time.RFC3339))