Exercises & activities from the go workshop provided by Packt: https://courses.packtpub.com/courses/go
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

65 lines
946 B

  1. package main
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "io"
  6. "os"
  7. "strings"
  8. )
  9. type Person struct {
  10. Name string `json:"name"`
  11. Age int `json:"age"`
  12. }
  13. func loadPerson2(s string) (Person, error) {
  14. var p Person
  15. err := json.NewDecoder(strings.NewReader(s)).Decode(&p)
  16. if err != nil {
  17. return p, err
  18. }
  19. return p, nil
  20. }
  21. func loadPerson(r io.Reader) (Person, error) {
  22. var p Person
  23. err := json.NewDecoder(r).Decode(&p)
  24. if err != nil {
  25. return p, err
  26. }
  27. return p, nil
  28. }
  29. func main() {
  30. s := `{"Name":"Joe","Age":18}`
  31. s2 := `{"Name":"Jane","Age":21}`
  32. p, err := loadPerson(strings.NewReader(s))
  33. if err != nil {
  34. fmt.Println(err)
  35. }
  36. fmt.Println(p)
  37. p2, err := loadPerson2(s2)
  38. if err != nil {
  39. fmt.Println(err)
  40. }
  41. fmt.Println(p2)
  42. f, err := os.Open("data.json")
  43. if err != nil {
  44. fmt.Println(err)
  45. }
  46. p3, err := loadPerson(f)
  47. if err != nil {
  48. fmt.Println(err)
  49. }
  50. fmt.Println(p3)
  51. }