package main
import "fmt"
func main() {
// 1、make创建map类型的数据
// var userinfo = make(map[string]string)
// userinfo["username"] = "张三"
// userinfo["age"] = "20"
// userinfo["sex"] = "男"
// // fmt.Println(userinfo)
// fmt.Println(userinfo["username"])
//2、map 也支持在声明的时候填充元素
// var userinfo = map[string]string{
// "username": "张三",
// "age": "20",
// "sex": "男",
// }
// fmt.Println(userinfo)
// 3、第三种创建map类型数据的方法
userinfo := map[string]string{
"username": "张三",
"age": "20",
"sex": "男",
}
fmt.Println(userinfo)
}
package main
import "fmt"
func main() {
// var userinfo = map[string]string{
// "username": "张三",
// "age": "20",
// "sex": "男",
// }
// fmt.Println(userinfo["username"]) //张三
//for range循环遍历map类型的数据
var userinfo = map[string]string{
"username": "张三",
"age": "20",
"sex": "男",
}
for k, v := range userinfo {
fmt.Printf("key:%v value:%v\n", k, v)
}
}
package main
import "fmt"
func main() {
//map类型数据的curd
//1、创建 修改map类型的数据
// var userinfo = make(map[string]string)
// userinfo["username"] = "张三"
// userinfo["age"] = "20"
// fmt.Println(userinfo)
//2、创建 修改map类型的数据
// var userinfo = map[string]string{
// "username": "张三",
// "age": "20",
// }
// userinfo["username"] = "李四"
// fmt.Println(userinfo)
//3、获取 查找map类型的数据
// var userinfo = map[string]string{
// "username": "张三",
// "age": "20",
// }
// fmt.Println(userinfo["username"]) //获取
// v, ok := userinfo["age"]
// fmt.Println(v, ok) //20 true
// v, ok := userinfo["xxxxx"]
// fmt.Println(v, ok) // 空 和 false
//4、删除map数据里面的key以及对于的值
var userinfo = map[string]string{
"username": "张三",
"age": "20",
"sex": "男",
"height": "180cm",
}
fmt.Println(userinfo)
delete(userinfo, "sex")
fmt.Println(userinfo)
}
package main
import "fmt"
func main() {
//我们想在切片里面放一系列用户的信息,这时候我们就可以定义一个元素为map类型的切片
// var userinfo = []string{"张三", "李四"}
var userinfo = make([]map[string]string, 2, 2)
// fmt.Println(userinfo[0]) //map[] map不初始化的默认值nil
// fmt.Println(userinfo[0] == nil) //true
if userinfo[0] == nil {
userinfo[0] = make(map[string]string)
userinfo[0]["username"] = "张三"
userinfo[0]["age"] = "20"
userinfo[0]["height"] = "180cm"
}
if userinfo[1] == nil {
userinfo[1] = make(map[string]string)
userinfo[1]["username"] = "李四"
userinfo[1]["age"] = "22"
userinfo[1]["height"] = "170cm"
}
fmt.Println(userinfo)
}
package main
import "fmt"
func main() {
//如果我们想在切片里面放一系列用户的信息的时候我们就可以定义一个map类型的切片
var userinfo = make([]map[string]string, 3, 3)
// fmt.Println(userinfo[0] == nil)
if userinfo[0] == nil {
userinfo[0] = make(map[string]string)
userinfo[0]["username"] = "张三"
userinfo[0]["age"] = "20"
}
if userinfo[1] == nil {
userinfo[1] = make(map[string]string)
userinfo[1]["username"] = "李四"
userinfo[1]["age"] = "22"
}
if userinfo[2] == nil {
userinfo[2] = make(map[string]string)
userinfo[2]["username"] = "王五"
userinfo[2]["age"] = "22"
}
for _, v := range userinfo {
// fmt.Println(v)
for key, value := range v {
fmt.Printf("key:%v--value:%v\n", key, value)
}
}
}
package main
import "fmt"
func main() {
//如果我们想在map对象中存放一系列的属性的时候,我们就可以把map类型的值定义成切片
// var userinfo = make(map[string]string)
// userinfo["username"] = "张三"
// userinfo["hobby"] = "睡觉"
var userinfo = make(map[string][]string)
userinfo["hobby"] = []string{
"吃饭",
"睡觉",
"敲代码",
}
userinfo["work"] = []string{
"php",
"golang",
"前端",
}
// fmt.Println(userinfo)
for _, v := range userinfo {
// fmt.Println(k, v)
for _, value := range v {
fmt.Println(value)
}
}
}
package main
import "fmt"
func main() {
/*
值类型 :改变变量副本值的时候,不会改变变量本身的值 (基本数据类型、数组)
引用类型:改变变量副本值的时候,会改变变量本身的值 (切片、map)
*/
//map类型也是引用数据类型
var userinfo1 = make(map[string]string)
userinfo1["username"] = "张三"
userinfo1["age"] = "20"
userinfo2 := userinfo1
userinfo2["username"] = "李四"
fmt.Println(userinfo1)
fmt.Println(userinfo2)
}
package main
import (
"fmt"
"sort"
)
func main() {
//map的排序
map1 := make(map[int]int, 10)
map1[10] = 100
map1[1] = 13
map1[4] = 56
map1[8] = 90
map1[11] = 100
map1[2] = 13
// fmt.Println(map1)
/*
1 13
4 56
10 100
8 90
*/
// for key, val := range map1 {
// fmt.Println(key, val)
// }
//需求:按照key升序输出map的key=>value (签名算法)
//1、把map的key放在切片里面
var keySlice []int
for key, _ := range map1 {
keySlice = append(keySlice, key)
}
fmt.Println(keySlice) //[11 10 4 8 2 1]
//2、让key进行升序排序
sort.Ints(keySlice)
fmt.Println(keySlice) //[1 2 4 8 10 11]
//3、循环遍历key输出map的值
for _, v := range keySlice {
fmt.Printf("key=%v value=%v\n", v, map1[v])
}
}
package main
import (
"fmt"
"strings"
)
func main() {
// 写一个程序,统计一个字符串中每个单词出现的次数。比如:”how do you do”中how=1 do=2 you=1。
// this is golang
var str = "how do you do"
var strSlice = strings.Split(str, " ")
fmt.Println(strSlice)
var strMap = make(map[string]int)
for _, v := range strSlice {
strMap[v]++
}
fmt.Println(strMap)
}