go存储之内存
精选
原创
©著作权归作者所有:来自51CTO博客作者zzxiaoma的原创作品,请联系作者获取转载授权,否则将追究法律责任
在web应用中需要存储用户录入的信息,一般是使用数据库来存储,这里使用内存的形式来存储数据,主要用于演示数据存储到go类型map中。
package main
import (
"fmt"
)
type Person struct {
Id int
Name string
}
var PersonById map[int]*Person
var PersonByName map[string][]*Person
func store(person Person) {
PersonById[person.Id] = &person
PersonByName[person.Name] = append(PersonByName[person.Name], &person)
}
func main() {
PersonById = make(map[int]*Person)
PersonByName = make(map[string][]*Person)
person1 := Person{Id: 1, Name: "刘备"}
person2 := Person{Id: 2, Name: "关羽"}
person3 := Person{Id: 3, Name: "张飞"}
person4 := Person{Id: 4, Name: "刘备"}
store(person1)
store(person2)
store(person3)
store(person4)
fmt.Println(PersonById[1])
fmt.Println(PersonById[2])
for _, person := range PersonByName["刘备"] {
fmt.Println(person)
}
}
先定义一个结构体Person,定义2个map类型,1个是用户id为key,1个是用户名称为key。store是存储函数,往2个map中添加数据。
PersonById是直接根据id进行赋值,PersonByName中的value是一个切片,所以使用append进行添加。在main方法中先初始化4个Persion,然后把这4个Persion存入到map中,最后进行打印输出。这样就可以在其他地方对PersonById和PersonByName进行使用。