Vivasoft-logo

[ā§Ģ.ā§Š] āĻĢāĻžāĻ‡āĻ˛ āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨ (File operations)

Go āĻāĻ° io/ioutil āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻœ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ†āĻŽāĻ°āĻž āĻ˛ā§‹āĻ•āĻžāĻ˛ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻ āĻĢāĻžāĻ‡āĻ˛ read-write āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ, āĻāĻ° āĻ¸āĻžāĻĨā§‡ os āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻœ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ†āĻŽāĻ°āĻž āĻ¨āĻŋāĻœāĻ¸ā§āĻŦ āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻŋāĻ‚ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻāĻ° āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻŦāĻŋāĻˇā§Ÿ āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋāĨ¤ āĻ¯ā§‡āĻŽāĻ¨, file opening, closing, reading,creating, writing, remove

[ā§Ģ.ā§Š.ā§§] āĻĢāĻžāĻ‡āĻ˛ open

os.Open(“..file_name”) āĻĢāĻžāĻ‚āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ†āĻŽāĻ°āĻž āĻ˛ā§‹āĻ•āĻžāĻ˛ āĻĢāĻžāĻ‡āĻ˛ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡āĻ° āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻĢāĻžāĻ‡āĻ˛ āĻ“āĻĒā§‡āĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋāĨ¤ āĻŦā§āĻ°ā§āĻ¯āĻžāĻ•ā§‡āĻŸā§‡āĻ° āĻ­āĻŋāĻ¤āĻ°ā§‡ file_name āĻāĻ° āĻœāĻžā§ŸāĻ—āĻžā§Ÿ āĻ†āĻŽāĻ°āĻž āĻ¯ā§‡ āĻĢāĻžāĻ‡āĻ˛āĻŸāĻž āĻ“āĻĒā§‡āĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻšā§āĻ›āĻŋ, āĻ¤āĻžāĻ° path āĻĻāĻŋāĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻāĻ‡ āĻĢāĻžāĻ‚āĻļāĻ¨āĻŸāĻž āĻāĻ•āĻŸāĻž os.File āĻāĻ° āĻāĻ•āĻŸāĻŋ āĻĒā§Ÿā§‡āĻ¨ā§āĻŸāĻžāĻ° (*os.File, āĻ¯ā§‡āĻŸāĻž file handle āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻŦā§‡) āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻž āĻāĻ°āĻ° āĻ°āĻŋāĻŸāĻžāĻ°ā§āĻ¨ āĻ•āĻ°ā§‡āĨ¤Â 

āĻĢāĻžāĻ‡āĻ˛ āĻ“āĻĒā§‡āĻ¨ āĻ•āĻ°āĻžāĻ° āĻĒāĻ°ā§‡, āĻŦāĻžāĻ•āĻŋ āĻ¸āĻŦ āĻ•āĻžāĻœ āĻļā§‡āĻˇā§‡ āĻĢāĻžāĻ‡āĻ˛āĻŸāĻž close āĻ•āĻ°āĻž āĻ­āĻžāĻ˛ā§‹ āĻĒā§āĻ°ā§āĻ¯āĻžāĻ•āĻŸāĻŋāĻ¸ ( āĻāĻŸāĻžāĻ° āĻœāĻ¨ā§āĻ¯ defer āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯āĻžā§Ÿ), āĻ¨āĻŋāĻšā§‡āĻ° āĻ•ā§‹āĻĄāĻŸāĻž āĻ–ā§‡ā§ŸāĻžāĻ˛ āĻ•āĻ°āĻŋ –

				
					

   f, err := os.Open("../5-type-converison/read-file.txt")
   defer f.Close()
   if err != nil {
   fmt.Println(err)
   return
   }

				
			

āĻāĻ‡Â  āĻ•ā§‹āĻĄā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻĢāĻžāĻ‡āĻ˛ āĻ¸ā§āĻŸā§āĻ°āĻžāĻ•āĻšāĻžāĻ° āĻ›āĻŋāĻ˛ā§‹āĻƒ

āĻ†āĻŽāĻ°āĻžÂ  “6-file/file-op.go” path āĻ āĻĨā§‡āĻ•ā§‡ “5-type-converison” āĻĢā§‹āĻ˛ā§āĻĄāĻžāĻ°ā§‡āĻ° read-file.txt āĻ“āĻĒā§‡āĻ¨ āĻ•āĻ°āĻ›āĻŋāĨ¤ āĻ¤āĻžāĻ‡ os.Open() āĻāĻ° āĻ­āĻŋāĻ¤āĻ°ā§‡ āĻ¸ā§‡āĻ‡ āĻ…āĻ¨ā§āĻ¯āĻžā§Ÿā§€ āĻĢāĻžāĻ‡āĻ˛ā§‡āĻ° path āĻĻā§‡ā§ŸāĻž āĻšā§Ÿā§‡āĻ›ā§‡āĨ¤ āĻ¯āĻĻāĻŋ āĻ āĻŋāĻ•āĻ āĻžāĻ• āĻŽāĻ¤ā§‹ āĻĢāĻžāĻ‡āĻ˛ āĻ“āĻĒā§‡āĻ¨ āĻ¨āĻž āĻšā§Ÿ, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻāĻ°āĻ° āĻ°āĻŋāĻŸāĻžāĻ°ā§āĻ¨ āĻ•āĻ°āĻ¤ā§‹āĨ¤

[ā§Ģ.ā§Š.ā§¨] āĻĢāĻžāĻ‡āĻ˛ Read

āĻ•ā§‹āĻ¨ āĻĢāĻžāĻ‡āĻ˛āĻ•ā§‡ read āĻ•āĻ°āĻžāĻ° āĻĒāĻ°ā§‡ āĻ†āĻŽāĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻĢāĻžāĻ‡āĻ˛ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄā§‡āĻ˛ āĻĒāĻžāĻ‡āĨ¤ āĻāĻ‡ āĻĢāĻžāĻ‡āĻ˛ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄā§‡āĻ˛ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ os āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻœā§‡āĻ° Read() āĻĢāĻžāĻ‚āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ†āĻŽāĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻĢāĻžāĻ‡āĻ˛ read āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋāĨ¤ āĻ¤āĻŦā§‡ āĻāĻ‡ āĻĢāĻžāĻ‚āĻļāĻ¨āĻŸāĻŋ āĻāĻ•āĻŸāĻž byte āĻŸāĻžāĻ‡āĻĒā§‡āĻ° āĻ…ā§āĻ¯āĻžāĻ°ā§‡ āĻ¤ā§‡,  āĻĢāĻžāĻ‡āĻ˛ āĻĨā§‡āĻ•ā§‡ read āĻ•āĻ°āĻž āĻŦāĻžāĻ‡āĻŸāĻ—ā§āĻ˛ā§‹ āĻ¸ā§āĻŸā§‹āĻ° āĻ•āĻ°ā§‡āĨ¤Â 

āĻāĻ•āĻ¸āĻžāĻĨā§‡ āĻ•āĻ¤āĻŸā§āĻ•ā§ read āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻ¸ā§āĻŸā§‹āĻ° āĻ•āĻ°ā§‡?

byte āĻŸāĻžāĻ‡āĻĒā§‡āĻ° āĻ¯ā§‡ āĻ…ā§āĻ¯āĻžāĻ°ā§‡ āĻ¤ā§‡ āĻ¸ā§āĻŸā§‹āĻ° āĻ•āĻ°āĻ›āĻŋ, āĻ¤āĻžāĻ° āĻĻā§ˆāĻ°ā§āĻ˜ā§āĻ¯ā§‡āĻ° āĻ¸āĻŽāĻžāĻ¨ (āĻ¯āĻĻāĻŋ āĻĢāĻžāĻ‡āĻ˛ āĻāĻ° āĻĻā§ˆāĻ°ā§āĻ˜ā§āĻ¯ byte āĻ…ā§āĻ¯āĻžāĻ°ā§‡āĻ° āĻšā§‡ā§Ÿā§‡ āĻ•āĻŽ āĻĨāĻžāĻ•ā§‡ āĻ¤āĻžāĻšāĻ˛ā§‡ āĻ¸āĻŦāĻ‡ read āĻ•āĻ°āĻŦā§‡)āĨ¤Â  āĻ°āĻŋāĻŸāĻžāĻ°ā§āĻ¨ āĻ•āĻ°ā§‡ āĻ•āĻ¤āĻ—ā§āĻ˛āĻž byte read āĻ•āĻ°āĻž āĻšā§Ÿā§‡āĻ›ā§‡ āĻ¸ā§‡āĻ‡ āĻ¸āĻ‚āĻ–ā§āĻ¯āĻž āĻāĻŦāĻ‚ āĻāĻ°āĻ° (āĻāĻ‡ āĻāĻ°āĻ° āĻšā§‡āĻ• āĻ•āĻ°ā§‡ āĻ¯āĻĻāĻŋ āĻĻā§‡āĻ–āĻž āĻ¯āĻžā§Ÿ āĻ¯ā§‡ āĻ¤āĻž nil, āĻ¤āĻžāĻšāĻ˛ā§‡āĻ‡ āĻāĻ•āĻŽāĻžāĻ¤ā§āĻ° āĻ¸āĻžāĻŽāĻ¨ā§‡ āĻ†āĻ—āĻžāĻŦā§‡) – 

				
					 f, err := os.Open("read-file.txt")
   defer f.Close()
   if err != nil {
       fmt.Println(err)
       return
   }
   data := make([]byte, 100)
   n, err := f.Read(data)
   if err != nil {
       fmt.Println(err)
       return
   }
   fmt.Printf("Read %d bytes: %s\n", n, string(data[:n]))

				
			

āĻ†āĻ‰āĻŸāĻĒā§āĻŸ – 

				
					Read 12 bytes: Hello Golang

				
			

āĻ‰āĻĒāĻ°ā§‡āĻ° āĻ•ā§‹āĻĄāĻŸāĻž āĻ¯āĻĻāĻŋ āĻ–ā§‡ā§ŸāĻžāĻ˛ āĻ•āĻ°āĻŋ, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻĻā§‡āĻ–āĻž āĻ¯āĻžāĻŦā§‡, os.Open(“read-file.txt”), read-file.txt āĻĢāĻžāĻ‡āĻ˛ āĻŸāĻž read āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ f āĻĢāĻžāĻ‡āĻ˛ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄā§‡āĻ˛ āĻāĻŦāĻ‚ err, āĻāĻ°āĻ° āĻ°āĻŋāĻŸāĻžāĻ°ā§āĻ¨ āĻ•āĻ°ā§‡āĨ¤ āĻāĻ‡ f āĻĢāĻžāĻ‡āĻ˛ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛ Read() āĻĢāĻžāĻ‚āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡, 100 āĻĻā§ˆāĻ°ā§āĻ˜ā§āĻ¯ā§‡āĻ° byte āĻŸāĻžāĻ‡āĻĒ āĻ…ā§āĻ¯āĻžāĻ°ā§‡āĻ¤ā§‡, āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻĢāĻžāĻ‡āĻ˛ āĻĨā§‡āĻ•ā§‡ āĻ¸āĻ°ā§āĻŦā§‹āĻšā§āĻš 100 byte āĻĄāĻžāĻŸāĻž read āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŦā§‡āĨ¤

io/ioutil āĻāĻ° ReadFile() āĻĢāĻžāĻ‚āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ†āĻ°ā§‹ āĻ¸āĻšāĻœā§‡ āĻĢāĻžāĻ‡āĻ˛ read āĻ•āĻ°āĻž āĻ¯āĻžā§ŸāĨ¤ āĻ•ā§‡āĻ¨āĻ¨āĻž āĻāĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ†āĻ˛āĻžāĻĻāĻž āĻ­āĻžāĻŦā§‡ āĻĢāĻžāĻ‡āĻ˛ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄā§‡āĻ˛ āĻ˛āĻžāĻ—ā§‡ āĻ¨āĻž, āĻ†āĻŦāĻžāĻ° āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ†āĻ˛āĻžāĻĻāĻž āĻ­āĻžāĻŦā§‡ byte āĻ…ā§āĻ¯āĻžāĻ°ā§‡ āĻĄāĻŋāĻ•ā§āĻ˛ā§‡ā§ŸāĻžāĻ° āĻ•āĻ°ā§‡ āĻ¤āĻžāĻ¤ā§‡ āĻ¸ā§āĻŸā§‹āĻ° āĻ•āĻ°āĻž āĻ˛āĻžāĻ—ā§‡ āĻ¨āĻž – 

				
					 ioutilData, err := ioutil.ReadFile("read-file.txt")
   if err != nil {
   fmt.Println(err)
   return
   }
   fmt.Printf("Read %d bytes: %s\n",len(ioutilData), string(ioutilData))

				
			

āĻ†āĻ‰āĻŸāĻĒā§āĻŸ – 

				
					   Read 12 bytes: Hello Golang
				
			

āĻāĻ‡ āĻ•ā§‹āĻĄ āĻ¯āĻĻāĻŋ āĻ–ā§‡ā§ŸāĻžāĻ˛ āĻ•āĻ°āĻŋ, ioutil.ReadFile(“read-file.txt“) āĻŸāĻŋ read-file.txt āĻĢāĻžāĻ‡āĻ˛ read āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻ°āĻŋāĻŸāĻžāĻ°ā§āĻ¨ āĻ•āĻ°āĻ›ā§‡ ioutilData (byte āĻŸāĻžāĻ‡āĻĒā§‡āĻ° āĻ…ā§āĻ¯āĻžāĻ°ā§‡) āĻāĻŦāĻ‚  err (āĻāĻ°āĻ°). āĻāĻ‡ ioutilData āĻ•ā§‡ string āĻ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°ā§‡ āĻ†āĻŽāĻ°āĻž āĻĢāĻžāĻ‡āĻ˛ā§‡āĻ° āĻ•āĻ¨ā§āĻŸā§‡āĻ¨ā§āĻŸ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋāĨ¤

[ā§Ģ.ā§Š.ā§Š] āĻĢāĻžāĻ‡āĻ˛ Create

os.Create(..file_name) āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ¨āĻ¤ā§āĻ¨ āĻĢāĻžāĻ‡āĻ˛ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšā§Ÿ (āĻ¯āĻĻāĻŋ āĻĢāĻžāĻ‡āĻ˛ āĻŸāĻž āĻ†āĻ—ā§‡ āĻĨā§‡āĻ•ā§‡āĻ‡ āĻĨā§‡āĻ•ā§‡ āĻĨāĻžāĻ•ā§‡, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻĢāĻžāĻ‡āĻ˛ā§‡āĻ° āĻ†āĻ—ā§‡āĻ° āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻŽā§āĻ›ā§‡ āĻ¯āĻžā§Ÿ)āĨ¤ āĻāĻ‡ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻŸāĻž āĻĢāĻžāĻ‡āĻ˛ā§‡āĻ° path  āĻ‡āĻ¨āĻĒā§āĻŸ āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ āĻ¨āĻŋā§Ÿā§‡,  āĻĢāĻžāĻ‡āĻ˛ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄā§‡āĻ˛ āĻāĻŦāĻ‚ āĻāĻ°āĻ° āĻ°āĻŋāĻŸāĻžāĻ°ā§āĻ¨ āĻ•āĻ°ā§‡(āĻ¯āĻĻāĻŋ āĻāĻ°āĻ° nil āĻ¨āĻž āĻšā§Ÿ, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻĢāĻžāĻ‡āĻ˛ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄā§‡āĻ˛āĻ•ā§‡ āĻ†āĻ° āĻ‡āĻ¨āĻĒā§āĻŸ/āĻ†āĻ‰āĻŸāĻĒā§āĻŸā§‡āĻ° āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯āĻžāĻŦā§‡ āĻ¨āĻž –

				
					  f, err := os.Create("read-file.txt")
   if err != nil {
       fmt.Println(err)
       return
   }
   defer f.Close()
				
			

āĻāĻ‡ āĻ•ā§‹āĻĄā§‡āĻ° āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ā§‡, āĻāĻ•āĻ‡ āĻĄāĻŋāĻ°ā§‡āĻ•ā§āĻŸāĻ°āĻŋāĻ¤ā§‡ “read-file.txt” āĻĢāĻžāĻ‡āĻ˛ā§‡ create āĻšāĻŦā§‡, āĻ¯āĻĻāĻŋ āĻ•ā§‹āĻ¨ āĻāĻ°āĻ° āĻ¨āĻž āĻĨāĻžāĻ•ā§‡āĨ¤

[ā§Ģ.ā§Š.ā§Ē] āĻĢāĻžāĻ‡āĻ˛ Writing

āĻāĻ–āĻžāĻ¨ā§‡ āĻāĻ•āĻŸāĻž āĻ¨āĻ¤ā§āĻ¨ āĻĢāĻžāĻ‡āĻ˛ create āĻ•āĻ°āĻžāĻ° āĻĒāĻ°ā§‡ write āĻ•āĻ°āĻž āĻšāĻŦā§‡āĨ¤ āĻ†āĻ—ā§‡ āĻĨā§‡āĻ•ā§‡ āĻāĻ•āĻŸāĻž byte āĻŸāĻžāĻ‡āĻĒā§‡āĻ° āĻ…ā§āĻ¯āĻžāĻ°ā§‡ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšāĻŦā§‡āĨ¤ āĻ¸ā§‡āĻ–āĻžāĻ¨ā§‡ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻĢāĻžāĻ‡āĻ˛ā§‡ āĻ•āĻŋ write āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ‡, āĻ¤āĻž āĻ¸ā§āĻŸā§‹āĻ° āĻ•āĻ°āĻž āĻšāĻŦā§‡āĨ¤ āĻĢāĻžāĻ‡āĻ˛ create āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽā§Ÿ āĻ†āĻŽāĻ°āĻž āĻ¯ā§‡ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄā§‡āĻ˛āĻŸāĻž āĻĒāĻžāĻŦā§‹, āĻ¤āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡āĻ‡ write āĻĢāĻžāĻ‚āĻļāĻ¨ āĻŸāĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻŦā§‡āĨ¤ āĻāĻ‡ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻŸāĻž āĻ°āĻŋāĻŸāĻžāĻ°ā§āĻ¨ āĻ•āĻ°ā§‡ āĻ•āĻ¤ āĻŦāĻžāĻ‡āĻŸ write āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡ āĻ¤āĻžāĻ° āĻ¸āĻ‚āĻ–ā§āĻ¯āĻž āĻāĻŦāĻ‚ āĻāĻ°āĻ°āĨ¤ āĻāĻ‡ āĻāĻ°āĻ°ā§‡āĻ° āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ā§‡, āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻĢāĻžāĻ‡āĻ˛ write āĻ āĻ•ā§‹āĻ¨ā§‹ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻšāĻ˛ā§‹ āĻ•āĻŋāĻ¨āĻž āĻ¤āĻž āĻ¯āĻžāĻšāĻžāĻ‡ āĻ•āĻ°āĻž āĻšā§ŸāĨ¤

āĻ¤āĻŦā§‡ āĻ¯āĻĻāĻŋ āĻ•ā§‹āĻ¨ āĻ•āĻžāĻ°āĻŖā§‡ āĻ¨āĻ¤ā§āĻ¨ create āĻ•āĻ°āĻž file āĻ write āĻšāĻ“ā§ŸāĻž byte āĻ¸āĻ‚āĻ–ā§āĻ¯āĻž āĻāĻŦāĻ‚ āĻ†āĻŽāĻ°āĻž āĻ¯āĻž write āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻšā§āĻ›āĻŋ āĻ¤āĻžāĻ° āĻĻā§ˆāĻ°ā§āĻ˜ā§āĻ¯ āĻ¯āĻĻāĻŋ āĻ¸āĻŽāĻžāĻ¨ āĻ¨āĻž āĻšā§Ÿ, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻ•ā§‹āĻ¨ āĻāĻ°āĻ° āĻšāĻŦā§‡ āĻ¨āĻž, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻāĻŸāĻž āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ†āĻ˛āĻžāĻĻāĻžāĻ­āĻžāĻŦā§‡ āĻšā§‡āĻ• āĻ•āĻ°ā§‡ āĻ¨āĻŋāĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤Â 

				
					 f, err := os.Create("read-file.txt")
   if err != nil {
       fmt.Println(err)
       return
   }
   defer f.Close()


   data := []byte("Hello Golang")
   n, err := f.Write(data)
   if len(data) != n {
       fmt.Printf("line num not matched %v, %v\n", n, len(data))
       return
   }
   if err != nil {
       fmt.Println(err)
       return
   }

				
			

ioutil āĻĻāĻŋā§Ÿā§‡āĻ“ āĻĢāĻžāĻ‡āĻ˛ write āĻ•āĻ°āĻž āĻ¯āĻžā§ŸāĨ¤ āĻāĻ‡ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡ ioutil āĻāĻ° WriteFile() āĻĢāĻžāĻ‚āĻļāĻ¨ āĻāĻ° – 

  • ā§§āĻŽ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻŸāĻžāĻ°āĻƒ āĻ¯ā§‡ āĻĢāĻžāĻ‡āĻ˛āĻŸāĻž write āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ‡, āĻ¤āĻžāĻ° file path
  • ā§¨ā§Ÿ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻŸāĻžāĻ°āĻƒ byte āĻŸāĻžāĻ‡āĻĒā§‡āĻ° āĻ…ā§āĻ¯āĻžāĻ°ā§‡āĻ° āĻ¨āĻžāĻŽ (āĻĢāĻžāĻ‡āĻ˛ā§‡ āĻ¯āĻž āĻ¸ā§āĻŸā§‹āĻ° āĻ•āĻ°ā§‡ āĻ°āĻžāĻ–āĻž āĻšāĻŦā§‡, āĻ¸ā§‡āĻ‡ āĻ•āĻ¨ā§āĻŸā§‡āĻ¨ā§āĻŸ āĻāĻ‡ āĻ…ā§āĻ¯āĻžāĻ°ā§‡āĻ¤ā§‡ āĻ†āĻ—ā§‡ āĻ¸ā§āĻŸā§‹āĻ° āĻ•āĻ°ā§‡ āĻ°āĻžāĻ–āĻž āĻšā§Ÿ)
  • ā§Šā§Ÿ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻŸāĻžāĻ°āĻƒ āĻĢāĻžāĻ‡āĻ˛ permission mode āĻ¸ā§‡āĻŸ āĻ•āĻ°ā§‡ āĻĻāĻŋāĻ¤ā§‡ āĻšā§ŸāĨ¤ āĻāĻ° āĻĻā§āĻŦāĻžāĻ°āĻžāĻ‡ āĻĢāĻžāĻ‡āĻ˛ā§‡ read/write āĻ•āĻ°āĻžāĻ° āĻĒāĻžāĻ°āĻŽāĻŋāĻļāĻ¨ āĻ¸ā§‡āĻŸ āĻšā§ŸāĨ¤
				
					   data := []byte("Hello, world!")
   err = ioutil.WriteFile("read-file.txt", data, 0644)
   if err != nil {
       fmt.Println(err)
       return
   }

				
			

[ā§Ģ.ā§Š.ā§Ģ] āĻĢāĻžāĻ‡āĻ˛ āĻ°āĻŋāĻŽā§āĻ­ āĻ•āĻ°āĻž

os.Remove(“file_name”)  āĻāĻ° āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ā§‡ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ°āĻž path āĻāĻ° āĻĢāĻžāĻ‡āĻ˛āĻŸāĻŋ āĻĄāĻŋāĻ˛āĻŋāĻŸ āĻšā§Ÿā§‡ āĻ¯āĻžāĻŦā§‡āĨ¤ āĻāĻ‡ āĻĢāĻžāĻ‚āĻļāĻ¨āĻŸāĻŋāĻ° āĻ‡āĻ¨āĻĒā§āĻŸ āĻšāĻŋāĻ¸ā§‡āĻŦā§‡, āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻ•āĻŸāĻž āĻĢāĻžāĻ‡āĻ˛ path āĻ¨ā§‡ā§Ÿ āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻāĻ°āĻ° āĻ°āĻŋāĻŸāĻžāĻ°ā§āĻ¨ āĻ•āĻ°ā§‡āĨ¤ āĻ¯āĻĻāĻŋ āĻāĻ°āĻ° nil āĻ¨āĻž āĻšā§Ÿ, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻĢāĻžāĻ‡āĻ˛ āĻĄāĻŋāĻ˛āĻŋāĻŸ āĻšāĻŦā§‡ āĻ¨āĻžāĨ¤

				
					  err := os.Remove("created.txt")
   if err != nil {
       fmt.Println(err)
       return
   }

				
			

āĻ¯āĻĻāĻŋ āĻ­ā§āĻ¯āĻžāĻ°āĻŋā§Ÿā§‡āĻŦāĻ˛ null āĻšā§Ÿ, āĻ¤āĻžāĻšāĻ˛ā§‡ InvalidUnmarshalError āĻĻāĻŋāĻŦā§‡āĨ¤Â Â 

āĻ¨āĻŋāĻšā§‡āĻ° āĻ•ā§‹āĻĄāĻŸāĻž āĻ–ā§‡ā§ŸāĻžāĻ˛ āĻ•āĻ°āĻŋ –

				
					 byt := []byte(
       `
       {
           "num":6.13,
           "strs":["a","b"]
       }
       `,
   )
   var v map[string]interface{}
   if err := json.Unmarshal(byt, &v); err != nil {
       panic(err)
   }
   fmt.Println(v)

				
			

āĻāĻ–āĻžāĻ¨ā§‡ āĻ†āĻŽāĻ°āĻž āĻ¯āĻĻāĻŋ āĻāĻ•āĻŸāĻŋ JSON āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸ āĻ•ā§‡ āĻāĻŽāĻ¨ āĻāĻ•āĻŸāĻŋ Map āĻ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ‡, āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ key āĻ—ā§āĻ˛ā§‹ āĻšāĻŦā§‡ string āĻāĻŦāĻ‚ key āĻāĻ° āĻ­ā§āĻ¯āĻžāĻ˛ā§ āĻ¯ā§‡āĻ•ā§‹āĻ¨ā§‹ āĻ•āĻŋāĻ›ā§āĻ‡ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤

āĻ†āĻ‰āĻŸāĻĒā§āĻŸ:

				
					   map[num:6.13 strs:[a b]]
				
			

āĻ¤āĻŦā§‡ āĻāĻ‡ āĻĒāĻĻā§āĻŦāĻ¤āĻŋāĻ° āĻāĻ•āĻŸāĻŋ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻšāĻ˛ā§‹, āĻĒā§āĻ°āĻ¤āĻŋāĻŦāĻžāĻ° Map āĻāĻ° āĻ­ā§āĻ¯āĻžāĻ˛ā§āĻ—ā§āĻ˛ā§‹ āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻŸāĻžāĻ‡āĻĒ āĻ•āĻžāĻ¸ā§āĻŸāĻŋāĻ‚ āĻ•āĻ°ā§‡ āĻ¨āĻŋāĻ¤ā§‡ āĻšāĻŦā§‡, (āĻ•ā§‡āĻ¨āĻ¨āĻž āĻ†āĻŽāĻ°āĻž āĻ­ā§āĻ¯āĻžāĻ˛ā§ āĻ—ā§āĻ˛āĻž interface{} āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ āĻ¨āĻŋā§Ÿā§‡āĻ›āĻŋ)āĨ¤ āĻāĻŸāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¯āĻĻāĻŋ āĻ•ā§‹āĻ¨ āĻ­ā§āĻ˛ āĻšā§Ÿ āĻ¤āĻžāĻšāĻ˛ā§‡ āĻ°āĻžāĻ¨āĻŸāĻžāĻ‡āĻŽ āĻāĻ°āĻ° āĻšāĻŦā§‡, āĻ¯ā§‡āĻŸāĻž āĻšāĻŋāĻšā§āĻ¨āĻŋāĻ¤ āĻ•āĻ°āĻž āĻ–ā§āĻŦāĻ‡ āĻāĻžāĻŽā§‡āĻ˛āĻžāĻ° āĻŦāĻŋāĻˇā§ŸāĨ¤ āĻ¤āĻžāĻ‡ āĻ†āĻŽāĻ°āĻž āĻ¯āĻĻāĻŋ āĻ†āĻ—ā§‡ āĻĨā§‡āĻ•ā§‡āĻ‡, āĻĄāĻŋāĻ•ā§‹āĻĄā§‡āĻĄ JSON āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸ āĻāĻ° āĻĢāĻŋāĻ˛ā§āĻĄāĻ—ā§āĻ˛ā§‹āĻ° āĻ­ā§āĻ¯āĻžāĻ˛ā§ āĻ•āĻŋ āĻŸāĻžāĻ‡āĻĒ āĻšāĻŦā§‡, āĻ¤āĻž āĻ āĻŋāĻ• āĻ•āĻ°ā§‡ āĻĻāĻŋāĻ¤ā§‡ āĻšāĻžāĻ‡, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻ†āĻŽāĻ°āĻž Struct āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ –

				
					 type response2 struct {
       Page   int      `json:"page-number"`
       Fruits []string `json:"fruits-List"`
   }
   str := `
   {
       "number": 1,
       "fruits-List": ["apple", "peach"]
   }`
   res := response2{}
   json.Unmarshal([]byte(str), &res)
   fmt.Println(res)
   fmt.Println(res.Fruits[0])

				
			

āĻ†āĻ‰āĻŸāĻĒā§āĻŸ – 

				
					 {0 [apple peach]}
   apple

				
			

āĻāĻ‡ āĻĒāĻĻā§āĻŦāĻ¤āĻŋāĻ° āĻ¸āĻŦāĻšā§‡ā§Ÿā§‡ āĻŦā§œ āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻšāĻ˛ā§‹; type-safety āĻāĻŦāĻ‚ āĻĒā§āĻ°āĻ¤āĻŋāĻŦāĻžāĻ° āĻŸāĻžāĻ‡āĻĒ āĻ•āĻžāĻ¸ā§āĻŸāĻŋāĻ‚ āĻ¨āĻž āĻ•āĻ°āĻžāĨ¤Â 

json.valid(): 

āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻ†āĻŽāĻ°āĻž āĻ¸ā§āĻ˛āĻžāĻ‡āĻ¸ / map / āĻšā§āĻ¯āĻžāĻ¨ā§‡āĻ˛ āĻ¨āĻŋā§Ÿā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻ›āĻŋāĨ¤

āĻļā§āĻ°ā§āĻ¤ā§‡ āĻ•ā§‹āĻ¨ā§‹ āĻ­ā§āĻ¯āĻžāĻ˛ā§ āĻĻāĻŋā§Ÿā§‡ āĻāĻĻā§‡āĻ°āĻ•ā§‡ āĻ‡āĻ¨āĻŋāĻļāĻŋā§ŸāĻžāĻ˛āĻžāĻ‡āĻœ āĻ•āĻ°ā§‡ āĻ¨āĻŋāĻŦā§‹ (āĻ¨āĻ¤ā§āĻŦāĻž nil / zero āĻĻāĻŋā§Ÿā§‡ āĻ‡āĻ¨āĻŋāĻļāĻŋā§ŸāĻžāĻ˛āĻžāĻ‡āĻœ āĻšāĻŦā§‡)

āĻļā§āĻ°ā§āĻ¤ā§‡ āĻāĻĻā§‡āĻ° āĻ¸āĻžāĻ‡āĻœ, āĻ•ā§āĻ¯āĻžāĻĒāĻžāĻ¸āĻŋāĻŸāĻŋ āĻ•āĻ¤ āĻšāĻŦā§‡ āĻ¤āĻž āĻ†āĻŽāĻ°āĻž āĻœāĻžāĻ¨āĻ˛ā§‡āĻ“, āĻĒāĻ°ā§‡ āĻ¤āĻž āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ (āĻ…āĻ°ā§āĻĨāĻžā§Ž āĻāĻĻā§‡āĻ° āĻ¸āĻžāĻ‡āĻœ, āĻ•ā§āĻ¯āĻžāĻĒāĻžāĻ¸āĻŋāĻŸāĻŋ āĻĄāĻžāĻ‡āĻ¨āĻžāĻŽāĻŋāĻ•ā§āĻ¯āĻžāĻ˛āĻŋ āĻĒāĻ°āĻŋāĻ°ā§āĻ¤āĻ¨ āĻšāĻŦā§‡)

āĻāĻ°āĻ•āĻŽ āĻ…āĻŦāĻ¸ā§āĻĨāĻžā§ŸāĻāĻ‡ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ†āĻŽāĻ°āĻž āĻšā§‡āĻ• āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ , āĻ•ā§‹āĻ¨ []byte (āĻŦāĻžāĻ‡āĻŸ āĻ¸ā§āĻ˛āĻžāĻ‡āĻ¸) āĻ­ā§āĻ¯āĻžāĻ˛āĻŋāĻĄ JSON āĻĄāĻžāĻŸāĻž āĻ•āĻŋ-āĻ¨āĻžāĨ¤ unmarshal() āĻ•āĻ°āĻžāĻ° āĻ†āĻ—ā§‡ āĻāĻ‡ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ†āĻ—ā§‡āĻ‡ āĻāĻ°āĻ° āĻšā§‡āĻ• āĻ•āĻ°āĻž āĻšā§Ÿ.

āĻ¨āĻŋāĻšā§‡āĻ° āĻ•ā§‹āĻĄāĻŸāĻŋ āĻ–ā§‡ā§ŸāĻžāĻ˛ āĻ•āĻ°āĻŋ – 

				
					 type response2 struct {
       Page   int      `json:"page-number"`
       Fruits []string `json:"fruits-List"`
   }
   str := `
   {
       "number": 1 "fruits-List": ["apple", "peach"]
   }`
   if json.Valid([]byte(str)) {
       res := response2{}
       json.Unmarshal([]byte(str), &res)
       fmt.Println(res)
       fmt.Println(res.Fruits[0])
   } else{
       fmt.Println("wrong JSON response")
   }

				
			

āĻ†āĻ‰āĻŸāĻĒā§āĻŸ –  

				
					 wrong JSON response
				
			

4.json.NewEncoder(): 

āĻāĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ JSON encoding āĻ•āĻ°āĻž āĻ¯āĻžā§Ÿ āĻāĻŦāĻ‚ āĻāĻ° āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻšāĻ˛ā§‹ āĻ†āĻŽāĻ°āĻž āĻāĻ•āĻ‡ āĻ¸āĻžāĻĨā§‡ JSON āĻ encode, āĻ†āĻ‰āĻŸāĻĒā§āĻŸ āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽ āĻāĻŦāĻ‚  āĻ¸ā§āĻŸā§‹āĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻ›āĻŋ  – 

				
					  package main

   import (
       "encoding/json"
       "os"
   )

   type Person struct {
       Name string
       Age  int
   }

   func main() {
       person := Person{Name: "John", Age: 30}
       file, err := os.Create("person.json")
       if err != nil {
           panic(err)
       }
       defer file.Close()
       encoder := json.NewEncoder(file)
       err = encoder.Encode(person)
       if err != nil {
           panic(err)
       }
   }

				
			

āĻ†āĻ‰āĻŸāĻĒā§āĻŸ person.json āĻĢāĻžāĻ‡āĻ˛ā§‡ āĻĒāĻžāĻ“ā§ŸāĻž āĻ¯āĻžāĻŦā§‡Â  –

				
					   {"Name":"John","Age":30}

				
			

āĻ†āĻ°ā§‹ āĻŦā§‡āĻļ āĻ•āĻŋāĻ›ā§ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻ°ā§Ÿā§‡āĻ›ā§‡āĻƒ āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ json.NewDecoder() āĻšāĻ˛ā§‹ json.NewEncoder() āĻāĻ° āĻ āĻŋāĻ• āĻ‰āĻ˛ā§āĻŸā§‹, āĻ¯ā§‡āĻŸāĻž json.NewDecoder() āĻ‡āĻ¨āĻĒā§āĻŸ āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽ āĻĨā§‡āĻ•ā§‡ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ JSON āĻĢāĻ°āĻŽā§āĻ¯āĻžāĻŸā§‡ āĻ‡āĻ¨āĻĒā§āĻŸ āĻ¨ā§‡ā§ŸāĨ¤Â 

[ā§Ģ.ā§¨.ā§¨] Data Serialization

Data Serialization āĻšāĻ˛ā§‹ āĻ¸ā§āĻŸā§āĻ°āĻžāĻ•āĻšāĻžāĻ°ā§āĻĄ āĻĄāĻžāĻŸāĻž āĻ•ā§‡ āĻāĻŽāĻ¨ āĻāĻ•āĻŸāĻž āĻĢāĻ°āĻŽā§āĻ¯āĻžāĻŸā§‡ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°āĻž, āĻ¯ā§‡āĻŸāĻžāĻ•ā§‡ āĻ¨ā§‡āĻŸāĻ“ā§ŸāĻžāĻ°ā§āĻ•ā§‡ āĻŸā§āĻ°āĻžāĻ¨ā§āĻ¸āĻŽāĻŋāĻŸ āĻ•āĻ°āĻž āĻ¯āĻžāĻŦā§‡ āĻ…āĻĨāĻŦāĻž Disk āĻ āĻ¸ā§‡āĻ‡āĻ­ āĻ•āĻ°ā§‡ āĻ°āĻžāĻ–āĻž āĻ¯āĻžāĻŦā§‡, āĻ¯āĻžāĻ¤ā§‡ āĻĒāĻ°ā§‡ āĻāĻ‡ āĻĄāĻžāĻŸāĻž āĻ•ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯āĻžā§ŸāĨ¤Â Â 

Go āĻ¤ā§‡ Data Serialization āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻŦāĻšā§‡ā§Ÿā§‡ āĻŦā§‡āĻļāĻŋ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ āĻŸā§‡āĻ•āĻ¨āĻŋāĻ• āĻšāĻ˛ā§‹ JSON āĻĢāĻ°āĻŽā§āĻ¯āĻžāĻŸā§‡ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°ā§‡ āĻ¨ā§‡ā§ŸāĻž, āĻ¯ā§‡āĻŸāĻž āĻ†āĻŽāĻ°āĻž āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡ āĻļāĻŋāĻ–ā§‡āĻ›āĻŋāĨ¤Â 

āĻāĻ–āĻžāĻ¨ā§‡Â  āĻ–ā§‡ā§ŸāĻžāĻ˛ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ āĻ¯ā§‡, āĻĒā§āĻ°āĻžā§ŸāĻļāĻƒ JSON āĻĢāĻ°āĻŽā§āĻ¯āĻžāĻŸā§‡āĻ° key āĻāĻŦāĻ‚ Struct āĻāĻ° āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻĢāĻŋāĻ˛ā§āĻĄ āĻ—ā§āĻ˛ā§‹ āĻāĻ•āĻ‡ āĻ¨āĻžāĻŽā§‡āĻ° āĻšā§Ÿ āĻ¨āĻž, āĻ¤āĻžāĻ‡Â  Struct āĻāĻ° āĻĢāĻŋāĻ˛ā§āĻĄā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻ¸ā§āĻŸāĻŽāĻžāĻ‡āĻœāĻĄ “json” āĻŸā§āĻ¯āĻžāĻ— āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšā§ŸāĨ¤ āĻ¨āĻŋāĻšā§‡āĻ° āĻ•ā§‹āĻĄāĻŸāĻŋ āĻ–ā§‡ā§ŸāĻžāĻ˛ āĻ•āĻ°āĻŋ –

				
					  type response2 struct {
       Page   int      `json:"pageNumber"`
       Fruits []string `json:"fruits-List"`
   }
   jsonStr := `
   {
   "page-number": 1,
   "fruits-List": ["apple", "peach"]
   }`
   res := response2{}
   json.Unmarshal([]byte(jsonStr), &res)
   fmt.Println(res)

				
			

āĻ†āĻ‰āĻŸāĻĒā§āĻŸ – 

				
					   {0 [apple peach]}
				
			

āĻāĻ‡ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, āĻ†āĻŽāĻ°āĻž āĻ¯ā§‡ āĻœā§‡āĻ¸āĻ¨ āĻĄāĻžāĻŸāĻž “jsonStr” āĻ°āĻŋāĻ¸āĻŋāĻ­ āĻ•āĻ°ā§‡, āĻāĻ¨āĻ•ā§‹āĻĄ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻšā§āĻ›āĻŋ, āĻ¤āĻžāĻ° āĻāĻ•āĻŸāĻžÂ  key (“page-number”), response2 Struct āĻāĻ° Page āĻĢāĻŋāĻ˛ā§āĻĄā§‡āĻ°Â  āĻœā§‡āĻ¸āĻ¨ āĻŸā§āĻ¯āĻžāĻ— (pageNumber) āĻāĻ°Â  āĻ¸āĻžāĻĨā§‡ āĻŽāĻŋāĻ˛ā§‡ āĻ¨āĻŋāĨ¤ āĻāĻ° āĻĢāĻ˛ā§‡ āĻ†āĻŽāĻ°āĻž āĻ¯āĻ–āĻ¨Â  jsonStr āĻ•ā§‡ āĻāĻ¨āĻ•ā§‹āĻĄ āĻ•āĻ°ā§‡ response2 Struct āĻ āĻ¸ā§āĻŸā§‹āĻ° āĻ•āĻ°ā§‡ āĻ°āĻžāĻ–āĻ¤ā§‡ āĻšāĻžāĻšā§āĻ›āĻŋ, āĻ“āĻ‡ āĻĢāĻŋāĻ˛ā§āĻĄā§‡āĻ° āĻ­ā§āĻ¯āĻžāĻ˛ā§ null āĻšā§Ÿā§‡ āĻ¯āĻžāĻšā§āĻ›ā§‡ (āĻ•ā§‹āĻ¨ error āĻĒāĻžāĻ‡āĻ¨āĻŋ āĻ•āĻŋāĻ¨ā§āĻ¤ā§!!) āĨ¤ āĻ¤āĻžāĻ‡, Struct āĻāĻ° “json” āĻŸā§āĻ¯āĻžāĻ— āĻĻā§‡ā§ŸāĻžāĻ° āĻ¸āĻŽā§Ÿ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻŦāĻžā§œāĻ¤āĻŋ āĻ¸āĻ¤āĻ°ā§āĻ•āĻ¤āĻž āĻ…āĻŦāĻ˛āĻŽā§āĻŦāĻ¨ āĻ•āĻ°āĻž āĻ˛āĻžāĻ—āĻŦā§‡, āĻ¯ā§‡āĻ¨ JSON āĻāĻ° key āĻāĻŦāĻ‚  Struct āĻāĻ° āĻāĻ•āĻ‡ āĻĢāĻŋāĻ˛ā§āĻĄā§‡āĻ° “json” āĻŸā§āĻ¯āĻžāĻ— āĻāĻ•āĻ‡ āĻšā§ŸāĨ¤

[ā§Ģ.ā§¨.ā§Š] āĻŸāĻžāĻ‡āĻĒ āĻ•āĻ¨āĻ­āĻžāĻ°ā§āĻļāĻ¨

āĻāĻ• āĻŸāĻžāĻ‡āĻĒā§‡āĻ° āĻĄāĻžāĻŸāĻž āĻ•ā§‡ āĻ…āĻ¨ā§āĻ¯ āĻŸāĻžāĻ‡āĻĒā§‡āĻ° āĻĄāĻžāĻŸāĻž āĻ¤ā§‡ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°āĻžāĻ•ā§‡ āĻŦāĻ˛ā§‡ āĻŸāĻžāĻ‡āĻĒ āĻ•āĻ¨āĻ­āĻžāĻ°ā§āĻļāĻ¨. Go āĻ¤ā§‡ āĻāĻ• āĻŸāĻžāĻ‡āĻĒā§‡āĻ° āĻĄāĻžāĻŸāĻž āĻ•ā§‡ āĻ…āĻ¨ā§āĻ¯ āĻŸāĻžāĻ‡āĻĒā§‡ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°āĻž āĻ–ā§āĻŦāĻ‡ āĻ¸āĻšāĻœ –

				
					  var iNum int = 10
   var fNum float64 = float64(iNum)
   fmt.Printf("value = %v | type - %T\n", fNum, fNum)
   var fNum2 = 5.65
   iNum2 := int(fNum2)
   fmt.Printf("value = %v | type - %T\n", iNum2, iNum2)

				
			

āĻ†āĻ‰āĻŸāĻĒā§āĻŸ –

				
					   value = 10 | type - float64
   value = 5 | type - int
				
			

āĻāĻ‡ āĻ•ā§‹āĻĄ āĻĻā§‡āĻ–ā§‡ āĻ–ā§āĻŦ āĻ¸āĻšāĻœā§‡āĻ‡ āĻŦā§‹āĻāĻž āĻ¯āĻžāĻšā§āĻ›ā§‡ āĻ¯ā§‡, āĻ†āĻŽāĻ°āĻž āĻ¯āĻĻāĻŋ V āĻŸāĻžāĻ‡āĻĒā§‡āĻ° āĻĄāĻžāĻŸāĻž āĻ•ā§‡ T āĻŸāĻžāĻ‡āĻĒā§‡āĻ° āĻĄāĻžāĻŸāĻžāĻ¤ā§‡ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ‡, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻ†āĻŽāĻ°āĻž T(V) āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŦā§‹āĨ¤Â 

āĻ¤āĻŦā§‡ āĻ…āĻŦāĻļā§āĻ¯āĻ‡ āĻ•āĻŋāĻ›ā§ āĻ¨āĻŋā§ŸāĻŽ āĻŽā§‡āĻ¨ā§‡ āĻ•āĻ°āĻž āĻ˛āĻžāĻ—āĻŦā§‡, string āĻŸāĻžāĻ‡āĻĒā§‡āĻ° āĻĄāĻžāĻŸāĻž āĻ•ā§‡ āĻ¤ā§‹ āĻ†āĻ° āĻ‡āĻ¨ā§āĻŸāĻŋāĻœāĻžāĻ° / āĻĢā§āĻ˛ā§‹āĻŸ āĻ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ“ā§ŸāĻž āĻ‰āĻšāĻŋāĻ¤ āĻ¨āĻžāĨ¤

				
					  var str string = "string value"
   iNum2 := int(str)
				
			

āĻāĻ‡ āĻ…āĻĻā§āĻ­ā§āĻ¤ āĻšāĻžāĻ“ā§ŸāĻžāĻ° āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻšāĻžāĻ¤ā§‡-āĻ¨āĻžāĻ¤ā§‡ –

				
					   # command-line-arguments
   ./type_conv.go:8:15: cannot convert str (variable of type string) to type int
				
			

āĻ—āĻžāĻŖāĻŋāĻ¤āĻŋāĻ• āĻšāĻŋāĻ¸āĻžāĻŦ āĻ¨āĻŋāĻ•āĻžāĻļ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽā§Ÿ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻāĻ‡ āĻŸāĻžāĻ‡āĻĒ āĻ•āĻ¨āĻ­āĻžāĻ°ā§āĻļāĻ¨ āĻ—ā§āĻ˛ā§‹ āĻ–ā§‡ā§ŸāĻžāĻ˛ āĻ°ā§‡āĻ–ā§‡ āĻ•āĻ°āĻž āĻ˛āĻžāĻ—āĻŦā§‡āĨ¤Â 

āĻ§āĻ°āĻŋ, āĻ†āĻŽāĻ°āĻž āĻšāĻžāĻšā§āĻ›āĻŋ ā§¨ āĻŸāĻŋ āĻ¸āĻ‚āĻ–ā§āĻ¯āĻž āĻ¯ā§‹āĻ— āĻ•āĻ°āĻŦā§‹, āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻāĻ•āĻŸāĻŋ interger, āĻ†āĻ°ā§‡āĻ•āĻŸāĻŋ āĻĢā§āĻ˛ā§‹āĻŸ. āĻ¤āĻ–āĻ¨ āĻ…āĻŦāĻļā§āĻ¯āĻ‡ āĻāĻĻā§‡āĻ°āĻ•ā§‡ āĻāĻ•āĻ‡ āĻŸāĻžāĻ‡āĻĒā§‡ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°ā§‡ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻ˛āĻžāĻ—āĻŦā§‡, āĻ¨āĻžāĻšāĻ˛ā§‡ error āĻ†āĻ¸āĻŦā§‡

				
					

   var num1 float64 = 10.5
   var num2 int = 5
   result := num1 + num2
   fmt.Println("result = ", result)
				
			

āĻ†āĻ‰āĻŸāĻĒā§āĻŸ – 

				
					 # command-line-arguments
   ./type_conv.go:20:12: invalid operation: num1 + num2 (mismatched types float64 and int)
				
			

āĻ¸ā§āĻĒāĻˇā§āĻŸāĻ¤āĻ‡, āĻĻā§‡āĻ–āĻž āĻ¯āĻžāĻšā§āĻ›ā§‡,āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ¯ā§‹āĻ— āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨ā§‡Â  āĻ­ā§āĻ˛ āĻšā§Ÿā§‡āĻ›ā§‡āĨ¤Â 

āĻ¸āĻ āĻŋāĻ• āĻ­āĻžāĻŦā§‡ āĻ•āĻ°āĻ˛ā§‡ āĻšāĻŦā§‡ āĻ¨āĻŋāĻšā§‡āĻ° āĻŽāĻ¤ā§‹ –

				
					   var num1 float64 = 10.5
   var num2 int = 5
   result := float64(num1) + float64(num2)
   fmt.Println("result = ", result)
				
			

āĻāĻ–āĻžāĻ¨ā§‡ ā§¨ āĻŸāĻž āĻ¨āĻžāĻŽā§āĻŦāĻžāĻ°āĻ•ā§‡āĻ‡ āĻĢā§āĻ˛ā§‹āĻŸā§‡ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°ā§‡ āĻ¨ā§‡ā§ŸāĻž āĻšā§Ÿā§‡āĻ›ā§‡, āĻšāĻžāĻ‡āĻ˛ā§‡ āĻ†āĻŽāĻ°āĻž āĻ‡āĻ¨ā§āĻŸāĻŋāĻœāĻžāĻ°ā§‡āĻ“ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°ā§‡ āĻ¨āĻŋāĻ¤ā§‡ āĻĒāĻžāĻ°āĻ¤āĻžāĻŽāĨ¤

āĻ†āĻŽāĻ°āĻž āĻšāĻžāĻ‡āĻ˛ā§‡ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻĢāĻ°āĻŽā§āĻ¯āĻžāĻŸā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻŦā§‡āĻ¸ā§‡āĻ° āĻ¨āĻžāĻŽā§āĻŦāĻžāĻ° āĻ•ā§‡ āĻ…āĻ¨ā§āĻ¯ āĻ•ā§‹āĻ¨ āĻŦā§‡āĻ‡āĻ¸ā§‡ āĻ†āĻ‰āĻŸāĻĒā§āĻŸ āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽā§‡ āĻĻā§‡āĻ–āĻžāĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋāĻƒ

				
					 var d1 int = 10
   fmt.Printf("in binary=%b\n", d1)
   fmt.Printf("in octal=%o\n", d1)
   fmt.Printf("in hexadecimal=%X\n", d1)

				
			

āĻ†āĻ‰āĻŸāĻĒā§āĻŸ – 

				
					 in binary=1010
   in octal=12
   in Hexadecimal=A