Vivasoft-logo

[ā§Š.ā§Ē] āĻĒā§āĻ°ā§āĻ¯āĻžāĻ•āĻŸāĻŋāĻ¸ āĻĒā§āĻ°āĻŦā§āĻ˛ā§‡āĻŽāĻ¸ (Practice Problems)

  1. Post āĻ¨āĻžāĻŽā§‡ āĻāĻ•āĻŸāĻŋ Struct āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§āĻ¨ āĻ¯āĻžāĻ° ID, Category, Location, Time āĻ¨āĻžāĻŽāĻ• āĻĢāĻŋāĻ˛ā§āĻĄ āĻĨāĻžāĻ•āĻŦā§‡āĨ¤ āĻāĻ–āĻ¨ Location āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ†āĻŦāĻžāĻ° Latitude, Longitude āĻĨāĻžāĻ•āĻŦā§‡āĨ¤ Post āĻāĻ° āĻĻā§āĻŸāĻŋ āĻ‡āĻ¨ā§āĻ¸āĻŸā§āĻ¯āĻžāĻ¨ā§āĻ¸ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§āĻ¨ āĨ¤ āĻļāĻ°ā§āĻ¤ āĻšāĻšā§āĻ›ā§‡, āĻ¤āĻžāĻĻā§‡āĻ° ID, Category, Time āĻ†āĻ˛āĻžāĻĻāĻž āĻ•āĻŋāĻ¨ā§āĻ¤ā§ Location āĻāĻ•āĻ‡ āĻĨāĻžāĻ•āĻŦā§‡ āĨ¤
  2. āĻ§āĻ°ā§āĻ¨ Post āĻāĻ° āĻĻā§āĻŸāĻŋ āĻ•ā§āĻ¯āĻžāĻŸāĻžāĻ—āĻ°āĻŋ āĻ°ā§Ÿā§‡āĻ›ā§‡āĨ¤ āĻ¯ā§‡āĻŽāĻ¨, Photo āĻāĻŦāĻ‚ Video āĨ¤Â  āĻĻā§āĻ‡ āĻ•ā§āĻ¯āĻžāĻŸāĻžāĻ—āĻ°āĻŋāĻ° āĻœāĻ¨ā§āĻ¯āĻ‡ āĻ†āĻŽāĻžāĻĻā§‡āĻ° Thumbnail āĻŦāĻžāĻ¨āĻžāĻ¤ā§‡ āĻšāĻŦā§‡ āĨ¤ āĻĢāĻžāĻ‚āĻļāĻ¨āĻŸāĻž āĻĻā§‡āĻ–āĻ¤ā§‡ āĻāĻŽāĻ¨ āĻšāĻŦā§‡ –
				
					 func GenerateThumbnail(category string, data []byte) []byte {
       if category == "Photo" {
           // implementation
       } else {
           // implementation
       }
       return thumbnail // it carries []byte
   }

				
			

āĻ‡āĻŽāĻĒā§āĻ˛āĻŋāĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāĻ¨ āĻ¨āĻŋā§Ÿā§‡ āĻ­āĻžāĻŦāĻžāĻ° āĻĻāĻ°āĻ•āĻžāĻ° āĻ¨ā§‡āĻ‡āĨ¤ āĻ¤āĻŦā§‡ āĻāĻŸā§āĻ•ā§ āĻŦā§āĻāĻž āĻ¯āĻžāĻšā§āĻ›ā§‡ āĻ¯ā§‡, Photo āĻāĻŦāĻ‚ Video āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻ‡āĻŽāĻĒā§āĻ˛āĻŋāĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāĻ¨ āĻ†āĻ˛āĻžāĻĻāĻž āĻšāĻŦā§‡āĨ¤ āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻĢā§‡āĻ¸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻāĻ‡ āĻ•āĻžāĻœāĻŸāĻž āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻ•āĻ°āĻž āĻ¯āĻžā§Ÿ?

    3. āĻ¨āĻŋāĻšā§‡āĻ° āĻ•ā§‹āĻĄāĻŸāĻŋāĻ° āĻ†āĻ‰āĻŸāĻĒā§āĻŸ āĻ•āĻŋ āĻšāĻŦā§‡ ?

				
					 package main

   import (
       "fmt"
       "math"
   )

   type geometry interface {
       area() float64
       perim() float64
   }

   type rect struct {
       width, height float64
   }

   type circle struct {
       radius float64
   }

   func (r rect) area() float64 {
       return r.width * r.height
   }

   func (r rect) perim() float64 {
       return 2*r.width + 2*r.height
   }

   func (c circle) area() float64 {
       return math.Pi * c.radius * c.radius
   }

   func (c circle) perim() float64 {
       return 2 * math.Pi * c.radius
   }

   func measure(g geometry) {
       fmt.Println(g)
       fmt.Println(g.area())
       fmt.Println(g.perim())
   }

   func main() {
       r := rect{width: 3, height: 4}
       c := circle{radius: 5}
       measure(r)
       measure(c)
   }

				
			

  4. āĻāĻ‡ āĻ•ā§‹āĻĄāĻŸāĻŋāĻ° āĻ†āĻ‰āĻŸāĻĒā§āĻŸ āĻ•āĻŋ āĻšāĻŦā§‡? āĻŦā§āĻāĻžāĻ° āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°āĻŦ āĻ†āĻ‰āĻŸāĻĒā§āĻŸ āĻ•ā§‡āĻ¨ āĻāĻŽāĻ¨ āĻšāĻšā§āĻ›ā§‡ āĻāĻŦāĻ‚ āĻŦā§āĻāĻ¤ā§‡ āĻĒāĻžāĻ°āĻ˛ā§‡ āĻ āĻŋāĻ• āĻ•āĻ°ā§‡ āĻĢā§‡āĻ˛āĻŋ –

				
					 package main

   import "fmt"

   type Location struct {
       Latitude  float64 `json:"lat"`
       Longitude float64 `json:"lon"`
   }

   type Post struct {
       Category string   `json:"category"`
       Time     int64    `json:"time"`
       Location Location `json:"location"`
   }

   func (post Post) setLocation() {
       post.Location = Location{
           Latitude:  23.99,
           Longitude: 90.45,
       }
   }

   func main() {
       post := Post{}
       post.setLocation()
       fmt.Println(post.Location)
   }

				
			

  5. Employee  āĻ¨āĻžāĻŽā§‡āĻ° āĻāĻ•āĻŸāĻŋ Struct āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§āĻ¨ āĻ¯āĻžāĻ° name, age āĻāĻŦāĻ‚ salary āĻĢāĻŋāĻ˛ā§āĻĄ āĻĨāĻžāĻ•āĻŦā§‡āĨ¤ GiveRaise āĻ¨āĻžāĻŽāĻ• āĻāĻ•āĻŸāĻŋ āĻŽā§‡āĻĨāĻĄ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§āĻ¨ āĻ¯āĻž āĻāĻ•āĻœāĻ¨ āĻ•āĻ°ā§āĻŽāĻšāĻžāĻ°ā§€āĻ° āĻŦā§‡āĻ¤āĻ¨ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻļāĻ¤āĻžāĻ‚āĻļ āĻšāĻžāĻ°ā§‡ āĻŦā§ƒāĻĻā§āĻ§āĻŋ āĻ•āĻ°ā§‡āĨ¤ āĻāĻŽāĻ¨ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽ āĻ˛āĻŋāĻ–ā§āĻ¨ āĻ¯āĻž āĻāĻ•āĻŸāĻŋ Employee āĻ‡āĻ¨ā§āĻ¸āĻŸā§āĻ¯āĻžāĻ¨ā§āĻ¸ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡, GiveRaise āĻŽā§‡āĻĨāĻĄ āĻāĻ° āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ā§‡ āĻŦā§‡āĻ¤āĻ¨Â  āĻŦā§ƒāĻĻā§āĻ§āĻŋ āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻ¤āĻžāĻĻā§‡āĻ° āĻ¨āĻ¤ā§āĻ¨ āĻŦā§‡āĻ¤āĻ¨ āĻĒā§āĻ°āĻŋāĻ¨ā§āĻŸ āĻ•āĻ°ā§‡āĨ¤

				
					package main

   type Employee struct {
  	 // implementation
   }
   func main() {
   }

				
			

6. Add, Subtract, Multiply āĻāĻŦāĻ‚ Divide āĻŽā§‡āĻĨāĻĄ āĻ¸āĻš Calculator āĻ¨āĻžāĻŽā§‡ āĻāĻ•āĻŸāĻŋ āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻĢā§‡āĻ¸ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§āĻ¨āĨ¤ BasicCalculator āĻāĻŦāĻ‚ ScientificCalculator  āĻ¨āĻžāĻŽā§‡ āĻĻā§āĻ‡āĻŸāĻŋ Struct āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§āĻ¨ āĻ¯āĻž āĻŽā§ŒāĻ˛āĻŋāĻ• āĻ—āĻžāĻŖāĻŋāĻ¤āĻŋāĻ• āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨ āĻ—ā§āĻ˛ā§‹ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ Calculator  āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻĢā§‡āĻ¸āĻ•ā§‡ āĻ‡āĻŽāĻĒā§āĻ˛āĻŋāĻŽā§‡āĻ¨ā§āĻŸ āĻ•āĻ°ā§‡āĨ¤ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽ āĻ˛āĻŋāĻ–ā§āĻ¨ āĻ¯āĻž āĻāĻ•āĻŸāĻŋ BasicCalculator āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ ScientificCalculator  āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡, āĻ‰āĻ­āĻ¯āĻŧ Calculator  āĻĻāĻŋāĻ¯āĻŧā§‡ āĻ•āĻŋāĻ›ā§ āĻ—āĻŖāĻ¨āĻž āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻĢāĻ˛āĻžāĻĢāĻ˛āĻ—ā§āĻ˛āĻŋ āĻĒā§āĻ°āĻŋāĻ¨ā§āĻŸ āĻ•āĻ°ā§‡āĨ¤

7. PrintValues āĻ¨āĻžāĻŽā§‡ āĻāĻ•āĻŸāĻŋ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻ˛āĻŋāĻ–ā§āĻ¨ āĻ¯āĻž āĻāĻŽā§āĻĒāĻŸāĻŋ āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻĢā§‡āĻ¸ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻ˛āĻžāĻ‡āĻ¸ āĻ¨ā§‡āĻ¯āĻŧ āĻāĻŦāĻ‚ āĻ¸ā§āĻ˛āĻžāĻ‡āĻ¸ā§‡āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ‰āĻĒāĻžāĻĻāĻžāĻ¨ā§‡āĻ° āĻŽāĻžāĻ¨ āĻĒā§āĻ°āĻŋāĻ¨ā§āĻŸ āĻ•āĻ°ā§‡āĨ¤ āĻ†āĻĒāĻ¨āĻžāĻ° āĻĢāĻžāĻ‚āĻļāĻ¨ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻ§āĻ°āĻ¨ā§‡āĻ° āĻŽāĻžāĻ¨ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄā§‡āĻ˛ āĻ•āĻ°āĻ¤ā§‡ āĻ¸āĻ•ā§āĻˇāĻŽ āĻšāĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤

				
					
   package main

   func main() {
       vals := []interface{}{1, "hello", true}
       PrintValues(vals)
   }

   // āĻ†āĻ‰āĻŸāĻĒā§āĻŸāĻƒ
   // 1
   // hello
   // true
				
			

8. āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽ āĻ˛āĻŋāĻ–ā§āĻ¨ āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ Formatter āĻ¨āĻžāĻŽāĻ• āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻĢā§‡āĻ¸ā§‡ āĻāĻ•āĻŸāĻŋ Format() āĻŽā§‡āĻĨāĻĄ āĻ†āĻ›ā§‡ āĻ¯āĻž āĻ•āĻŋāĻ›ā§ āĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚ āĻāĻ° āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻ˛āĻžāĻ‡āĻ¸ āĻ¨ā§‡āĻ¯āĻŧ āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻĢāĻ°ā§āĻŽā§āĻ¯āĻžāĻŸ āĻ•āĻ°āĻž āĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚ āĻ°āĻŋāĻŸāĻžāĻ°ā§āĻ¨ āĻ•āĻ°ā§‡āĨ¤ Formatter āĻ¨āĻžāĻŽāĻ• āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻĢā§‡āĻ¸āĻŸāĻŋāĻ•ā§‡ CSVFormatter struct āĻāĻŦāĻ‚ HTMLFormatter struct āĻĻā§āĻŦāĻžāĻ°āĻž āĻ‡āĻŽāĻĒā§āĻ˛āĻŋāĻŽā§‡āĻ¨ā§āĻŸ āĻ•āĻ°ā§āĻ¨āĨ¤ ā§ˇ Format āĻ¨āĻžāĻŽā§‡ āĻāĻ•āĻŸāĻŋ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§āĻ¨ āĻ¯āĻž āĻāĻ•āĻŸāĻŋ Formatter āĻ†āĻ°ā§āĻ—ā§āĻŽā§‡āĻ¨ā§āĻŸ āĻāĻŦāĻ‚ āĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚āĻ—ā§āĻ˛āĻŋāĻ° āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻ˛āĻžāĻ‡āĻ¸ āĻ¨ā§‡āĻ¯āĻŧ āĻāĻŦāĻ‚ Format() āĻŽā§‡āĻĨāĻĄāĻ•ā§‡ āĻ•āĻ˛ āĻ•āĻ°ā§‡āĨ¤ āĻāĻ•āĻŸāĻŋ CSVFormatter āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ HTMLFormatter āĻĻāĻŋāĻ¯āĻŧā§‡ āĻĢāĻžāĻ‚āĻļāĻ¨āĻŸāĻŋ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°ā§āĻ¨ā§ˇ āĻ†āĻ°ā§āĻ—ā§āĻŽā§‡āĻ¨ā§āĻŸ āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ āĻĒāĻžāĻ¸ āĻ•āĻ°āĻž Formatter āĻŸāĻŋ āĻāĻ•āĻŸāĻŋ CSVFormatter āĻ¨āĻžāĻ•āĻŋ HTMLFormatter āĻ¤āĻž āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻŸāĻžāĻ‡āĻĒ āĻ…ā§āĻ¯āĻžāĻ¸āĻžāĻ°āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§āĻ¨ āĻāĻŦāĻ‚ āĻāĻŸāĻžāĻ° āĻ¨āĻŋāĻœāĻ¸ā§āĻŦ āĻ…āĻ¤āĻŋāĻ°āĻŋāĻ•ā§āĻ¤ āĻŽā§‡āĻĨāĻĄāĻ•ā§‡ āĻ•āĻ˛ āĻ•āĻ°ā§āĻ¨ā§ˇ

				
					package main

import (
	"fmt"
	"strings"
)

// Formatter interface
type Formatter interface {
	Format([]string) string
}

// CSVFormatter struct

// Format method for CSVFormatter

// HTMLFormatter struct

// Format method for HTMLFormatter

// TestFormat function
func TestFormat(f Formatter, data []string) {

}

// CSVSpecificMethod for CSVFormatt
// HTMLSpecificMethod for HTMLFormatter

func main() {
	// Test CSV formatter
	csvFormatter := CSVFormatter{}
	TestFormat(csvFormatter, []string{"apple", "banana", "orange"})
	fmt.Println()

	// Test HTML formatter
	htmlFormatter := HTMLFormatter{}
	TestFormat(htmlFormatter, []string{"apple", "banana", "orange"})
}