fork download
  1. package main
  2.  
  3. import (
  4. "bufio"
  5. "fmt"
  6. "log"
  7. "os"
  8. "strings"
  9. )
  10.  
  11. type Profile struct {
  12. Name string
  13. Email string
  14. Phone string
  15. Occupation string
  16. Language []string
  17. Hobby []string
  18. Your_name string
  19. Your_gender string
  20. }
  21.  
  22. type MyMessage interface {
  23. ShowMessage() string
  24. }
  25.  
  26. func (p *Profile) SetProfile(arr map[string]string) {
  27. for k, v := range arr {
  28. p.k = v // このメンバ変数を動的に変えたい
  29. }
  30. }
  31.  
  32. func (p *Profile) ShowMessage() string {
  33. return fmt.Sprintf("Name: %s \nLanguage: %s", p.Name,
  34. strings.Join(p.Language, ", "))
  35. }
  36.  
  37. func main() {
  38. defer func() {
  39. if x := recover(); x != nil {
  40. log.SetOutput(os.Stdout)
  41. log.Println("panic!")
  42. }
  43. }()
  44.  
  45. me := &Profile{
  46. Name: "John Lennon",
  47. Email: "foobar@gmail.com",
  48. Phone: "+81-90-0000-0000",
  49. Occupation: "Programmer/System Engineer",
  50. Language: []string{"Japanese", "English" , "Spanish"},
  51. Hobby: []string{"Photography", "Traveling"},
  52. }
  53. you := make(map[string]string)
  54.  
  55. scanner := bufio.NewScanner(os.Stdin)
  56. fmt.Println("Would you please let me know your profile?")
  57. fmt.Print("Your name: ")
  58. scanner.Scan()
  59. you["Your_name"] = scanner.Text()
  60. fmt.Print("Your gender: ")
  61. scanner.Scan()
  62. you["Your_gender"] = scanner.Text()
  63. if err := scanner.Err(); err != nil {
  64. fmt.Fprintln(os.Stderr, "Read error: ", err)
  65. }
  66.  
  67. me.setProfile(you)
  68. fmt.Println(me.ShowMessage()) // My message to you.
  69. panic("panic")
  70. }
  71.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
# _/home/kZQ1Cj
./prog.go:28: p.k undefined (type *Profile has no field or method k)
./prog.go:67: me.setProfile undefined (type *Profile has no field or method setProfile)
stdout
Standard output is empty