首页 > 其他分享 >Golang基础-Maps

Golang基础-Maps

时间:2023-02-19 22:12:28浏览次数:34  
标签:map return string item int bill 基础 Golang Maps

常见用法

var ages map[string]int     // 只声明不初始化是nil,赋值会panic: assignment to entry in nil map
fmt.Println(ages == nil)    // "true"
fmt.Println(len(ages) == 0) // "true"

// 初始化
foo := map[string]int{}
foo := make(map[string]int)
ages := map[string]int{
    "alice":   31,
    "charlie": 34,
}

// 删除
delete(foo, "bar")

// 判断key是否存在
value, exists := foo["baz"]
// If the key "baz" does not exist,
// value: 0; exists: false

// 遍历
for name, age := range ages {
    fmt.Printf("%s\t%d\n", name, age)
}
for name := range ages {
    fmt.Printf("%s\n", name)
}

Exercise

package gross

// Units stores the Gross Store unit measurements.
func Units() map[string]int {
	res := map[string]int{
		"quarter_of_a_dozen": 3,
		"half_of_a_dozen":    6,
		"dozen":              12,
		"small_gross":        120,
		"gross":              144,
		"great_gross":        1728,
	}
	return res
}

// NewBill creates a new bill.
func NewBill() map[string]int {
	bill := make(map[string]int) // 必须make,否则不会初始化。只声明不make是nil
	return bill
}

// AddItem adds an item to customer bill.
func AddItem(bill, units map[string]int, item, unit string) bool {
	if bill == nil {
		bill = NewBill()
	}
	if _, exists := units[unit]; !exists {
		return false
	}
	bill[item] += units[unit]
	return true
}

// RemoveItem removes an item from customer bill.
func RemoveItem(bill, units map[string]int, item, unit string) bool {
	if bill == nil {
		return false
	}
	if _, exists := bill[item]; !exists {
		return false
	}
	if _, exists := units[unit]; !exists {
		return false
	}
	if bill[item]-units[unit] < 0 {
		return false
	}
	if bill[item] == units[unit] {
		delete(bill, item)
	} else {
		bill[item] -= units[unit]
	}
	return true
}

// GetItem returns the quantity of an item that the customer has in his/her bill.
func GetItem(bill map[string]int, item string) (int, bool) {
	if bill == nil {
		return 0, false
	}
	if _, exists := bill[item]; !exists {
		return 0, false
	}
	return bill[item], true
}

标签:map,return,string,item,int,bill,基础,Golang,Maps
From: https://www.cnblogs.com/roadwide/p/17135754.html

相关文章

  • Linux基础 - 服务管理 supervisor自启动问题
     一、 supervisor 自启动问题1.1Supervisor自启动导致无法使用环境变量编写systemd文件,使用systemd启动。在supervisord.conf配置文件中使用/etc/profile中的环境......
  • Golang基础-Time
    常用函数t,err:=time.Parse(layout,date)//time.Time,errort:=time.Date(1995,time.September,22,13,0,0,0,time.UTC)formatedTime:=t.Format("Mon,01/02/2......
  • 树与二叉树的基础概念与代码实现
    树与二叉树的基础概念与代码实现树,其实跟我们现实生活中的树是差不多的。如果你还不了解树这个数据结构的话,你可能认为树是这样的:但事实正好相反,在数据结构当中,树的模......
  • day6 golang-标准库(随时更新)
    time时间库 packagemainimport( "fmt" "time")funcmain(){ t:=time.Now() //time.Timetime.Date(2023,time.February,19,14,38,1,393023500,ti......
  • Linux基础 - 服务管理 supervisor
     一、supervisor 1.1 supervisor 介绍 Supervisor是一个进程管理工具,当进程中断的时候Supervisor能自动重新启动它,可以运行在各种类unix系统上。Supervisor......
  • jsp开发基础
    1、什么时动态网页?指的是能够通过不同的操作返回不同的功能及数据,具有交互功能。常见的开发模式:B/S架构:游览器和服务器C/S架构:客户端和服务器B/S架构的执行原理:基于......
  • git基础操作
    一、分支分支命名规则开发分支:dev功能分支:feature/功能名称bug分支:bugfix/bug名称预发布分支:release/预发布版本名称列出本地分支:gitbranch列出远程分......
  • pwntools基础知识
    pwntools基础知识连接:本地process()里面放文件名例如process('./test');远程remote(,),remote接受url并指定端口,remote('url',端口)。数据处理:主要对整数进行打包,就是......
  • Linux基础 - 服务管理 Unit配置文件
     一、配置文件的格式1.配置文件的区块名和字段名,都是大小写敏感的。2.每个区块内部是一些等号连接的键值对,键值对的等号两侧不能有空格。[root@cl-server~]#sys......
  • Linux基础 - 服务管理 systemctl
     一、UnitSystemd可以管理所有系统资源,不同的资源统称为Unit(单位)。Unit一共分成12种。Serviceunit:  系统服务, 封装守护进程的启动、停止、重启和重载操作......