title: Dereferencing a map index in Golang
body: <p>I'm learning Go currently and I made this simple and crude inventory program just to tinker with structs and methods to understand how they work. In the driver file I try to call a method from and item type from the items map of the Cashier type. My method have pointer reciever to use the structs directly instead of making copies. When I run the program I get this error <code>.\driver.go:11: cannot call pointer method on f[0]
      .\driver.go:11: cannot take the address of f[0]</code></p>
  
  <p>Inventory.go:</p>
  
  <pre><code>package inventory
  
  
  type item struct{
      itemName string
      amount int
  }
  
  type Cashier struct{
      items map[int]item
      cash int
  }
  
  func (c *Cashier) Buy(itemNum int){
      item, pass := c.items[itemNum]
  
      if pass{
          if item.amount == 1{
              delete(c.items, itemNum)
          } else{
              item.amount--
              c.items[itemNum] = item 
          }
          c.cash++
      }
  }
  
  
  func (c *Cashier) AddItem(name string, amount int){
      if c.items == nil{
          c.items = make(map[int]item)
      }
      temp := item{name, amount}
      index := len(c.items)
      c.items[index] = temp
  }
  
  func (c *Cashier) GetItems() map[int]item{
      return c.items;
  }
  
  func (i *item) GetName() string{
      return i.itemName
  }
  
  func (i *item) GetAmount() int{
      return i.amount
  }
  </code></pre>
  
  <p>Driver.go:</p>
  
  <pre><code>package main
  
  import "fmt"
  import "inventory"
  
  func main() {
      x := inventory.Cashier{}
      x.AddItem("item1", 13)
      f := x.GetItems()
  
      fmt.Println(f[0].GetAmount())
  }
  </code></pre>
  
  <p>The part of the code that really pertains to my problem is the <code>GetAmount</code> function in <code>inventory.go</code> and print statement in the <code>driver.go</code></p>