fork download
  1. package main
  2.  
  3. import (
  4. "fmt"
  5. "strings"
  6. )
  7.  
  8. type Kamus struct {
  9. Data map[string][]string
  10. }
  11.  
  12. func (k *Kamus) tambah(kata string, sinonim []string) {
  13. k.Data[kata] = append(k.Data[kata], sinonim...)
  14. if k.Data[kata] != nil {
  15. for _, s := range sinonim {
  16. k.Data[s] = append(k.Data[s], kata)
  17. }
  18. }
  19. }
  20.  
  21. func (k *Kamus) ambilSinonim(kata string) []string {
  22. var result []string
  23. for _, s := range k.Data[kata] {
  24. result = append(result, fmt.Sprintf("'%s'", s))
  25. }
  26. return []string{strings.Join(result, ",")}
  27. }
  28.  
  29. func NewKamus() *Kamus {
  30. return &Kamus{
  31. Data: make(map[string][]string),
  32. }
  33. }
  34.  
  35. func main() {
  36. kamus := NewKamus()
  37.  
  38. kamus.tambah("big", []string{"large", "great"})
  39. kamus.tambah("big", []string{"huge", "fat"})
  40. kamus.tambah("huge", []string{"enormous", "gigantic"})
  41.  
  42. fmt.Println(kamus.ambilSinonim("big"))
  43. fmt.Println(kamus.ambilSinonim("huge"))
  44. fmt.Println(kamus.ambilSinonim("gigantic"))
  45. fmt.Println(kamus.ambilSinonim("colossal"))
  46. }
  47.  
Success #stdin #stdout 0s 5320KB
stdin
Standard input is empty
stdout
['large','great','huge','fat']
['big','enormous','gigantic']
['huge']
[]