code: func populateMap(m map[int]string, nameMap map[string]intBool, file string) {
  	f, err := os.Open(file)
  	if err != nil {
  		return
  	}
  	defer f.Close()
  	bufr := bufio.NewReader(f)
  	for {
  		line, err := bufr.ReadString('\n')
  		if err != nil {
  			return
  		}
  		parts := strings.SplitN(line, ":", 4)
  		if len(parts) >= 3 {
  			idstr := parts[2]
  			id, err := strconv.Atoi(idstr)
  			if err == nil {
  				m[id] = parts[0]
  				if nameMap != nil {
  					nameMap[parts[0]] = intBool{id, true}
  				}
  			}
  		}
  	}
  }
docs: // Lame fallback parsing /etc/password for non-cgo systems where os/user doesn't work,
  // and used for groups (which also happens to work on OS X, generally)
  // nameMap may be nil.