// 先声明map
var m1 map[string]string
// 再使用make函数创建一个非nil的map,nil map不能赋值
m1 = make(map[string]string)
// 最后给已声明的map赋值
m1["a"] = "aa"
m1["b"] = "bb"
// 直接创建
m2 := make(map[string]string)
// 然后赋值
m2["a"] = "aa"
m2["b"] = "bb"
// 初始化 + 赋值一体化
m3 := map[string]string{
"a": "aa",
"b": "bb",
}
// ==========================================
// 查找键值是否存在
if v, ok := m1["a"]; ok {
fmt.Println(v)
} else {
fmt.Println("Key Not Found")
}
// 遍历map
for k, v := range m1 {
fmt.Println(k, v)
}
package main
import (
"fmt"
"user"
)
type Person struct {
ID string
Name string
Address string
}
func main() {
userDB := make(map[string](*user.User)) //注意写法
//初始化,注意对数组的初始化
u := new(user.User)
u.SetAge(12)
u.SetName("张三")
u.SetSex("男")
u.SetPhone("15902783102")
userDB["u1"] = u
v, ok := userDB["u1"] //获取map值 key为'u1'
if !ok {
fmt.Println(" 没有找到信息")
return
}
//打印出全部值 和各个分值
fmt.Println(v.String())
fmt.Printf("userDB[u1] = \n {name=%v \n age=%v \n sex=%v \n phone=%v \n}", v.GetName(), v.GetAge(), v.GetSex(), v.GetPhone())
personDB := make(map[string]Person)
var person = Person{"12346", "Xym", "bbb"}
personDB["p1"] = person
p, ok := personDB["p1"] //获取map值 key为'u1'
if !ok {
fmt.Println(" 没有找到信息")
return
}
//打印出全部值 和各个分值
fmt.Printf(" \n personDB[p1] = \n {ID=%v \n Name=%v \n address=%v \n}", p.ID, p.Name, p.Address)
// 先声明map
//var a map[string]string
//a["b"] = "c" //这样会报错的,要先初始化内存
//a = make(map[string]string)
//a["b"] = "c" //这样才不会错
var m1 map[string]string
// 再使用make函数创建一个非nil的map,nil map不能赋值
m1 = make(map[string]string)
// 最后给已声明的map赋值
m1["a"] = "aa"
m1["b"] = "bb"
m1["c"] = "cc"
m1["d"] = "dd"
fmt.Println("\n", m1) //输出元素的顺序是随机的,go语言中map是无序的
// 直接创建
m2 := make(map[string]string)
m2["a"] = "aa"
m2["b"] = "bb"
fmt.Println("\n", m2)
// 初始化 + 赋值一体化 注意最后一个元素后面也需要带上逗号的
m3 := map[string]string{
"a": "aa",
"b": "bb",
"c": "cc",
"xx": "xx",
"d": "dd", //注意最后一个元素后面也需要带上逗号的
}
fmt.Println("\n", m3)
//删除一个key对应的元素 map的删除操作
fmt.Println("删除之前", m3)
delete(m3, "a")
fmt.Println("删除之后", m3)
//map的遍历
fmt.Println("\n 遍历输出map")
for k, v := range m3 {
fmt.Printf("key=%v,val=%v \n", k, v) //无序的输出
}
}
package user
import (
"strconv"
)
type User struct {
name string
age int
sex string
phone string
}
func (s *User) SetName(name string) {
s.name = name
}
func (s *User) GetName() string {
return s.name
}
func (s *User) SetAge(age int) {
s.age = age
}
func (s *User) GetAge() int {
return s.age
}
func (s *User) String() string {
return "name is " + s.name + ",age is " + strconv.Itoa(s.age) + " ,sex=" + s.sex + " ,phone=" + s.phone
}
func (s *User) SetSex(sex string) {
s.sex = sex
}
func (s *User) GetSex() string {
return s.sex
}
func (s *User) SetPhone(phone string) {
s.phone = phone
}
func (s *User) GetPhone() string {
return s.phone
}
func (User) Print() string {
return "print"
}
参考:
https://www.yuque.com/docs/share/5943f6d8-f739-4b86-83b0-b95852f3301d