Golang如何从orderedmap列表中获取数据
Golang如何从orderedmap列表中获取数据
package main
import (
"fmt"
"github.com/iancoleman/orderedmap"
)
type User struct {
UserName string
Category string
Age int
}
type Users []User
func (u Users) NameList() []string {
var list []string
for _, user := range u {
list = append(list, user.Category, user.UserName)
}
return list
}
func main() {
users := Users{
User{UserName: "Bryan", Category: "Human", Age: 33},
User{UserName: "Jane", Category: "Rocker", Age: 25},
User{UserName: "Nancy", Category: "Mother", Age: 40},
User{UserName: "Chris", Category: "Dude", Age: 19},
User{UserName: "Martha", Category: "Cook", Age: 52},
}
UserList := users.NameList()
fmt.Println(UserList)
o := orderedmap.New()
o.Set("Bryan", User{UserName: "Bryan", Category: "Human", Age: 33})
o.Set("Jane", User{UserName: "Jane", Category: "Rocker", Age: 25})
o.Set("Nancy", User{UserName: "Nancy", Category: "Mother", Age: 40})
o.Set("Chris", User{UserName: "Chris", Category: "Dude", Age: 19})
o.Set("Martha", User{UserName: "Martha", Category: "Cook", Age: 52})
keys := o.Keys()
for _, k := range keys {
_, _ = o.Get(k)
_interface, _ := o.Get(k)
_Array := _interface.(User.UserName)
}
}
更多关于Golang如何从orderedmap列表中获取数据的实战教程也可以访问 https://www.itying.com/category-94-b0.html
2 回复
package main
import (
"fmt"
"github.com/iancoleman/orderedmap"
)
type User struct {
UserName string
Category string
Age int
}
type Users []User
func (u Users) NameList() []string {
var list []string
for _, user := range u {
list = append(list, user.Category, user.UserName)
}
return list
}
func main() {
users := Users{
User{UserName: "Bryan", Category: "Human", Age: 33},
User{UserName: "Jane", Category: "Rocker", Age: 25},
User{UserName: "Nancy", Category: "Mother", Age: 40},
User{UserName: "Chris", Category: "Dude", Age: 19},
User{UserName: "Martha", Category: "Cook", Age: 52},
}
UserList := users.NameList()
fmt.Println(UserList)
o := orderedmap.New()
o.Set("Bryan", User{UserName: "Bryan", Category: "Human", Age: 33})
o.Set("Jane", User{UserName: "Jane", Category: "Rocker", Age: 25})
o.Set("Nancy", User{UserName: "Nancy", Category: "Mother", Age: 40})
o.Set("Chris", User{UserName: "Chris", Category: "Dude", Age: 19})
o.Set("Martha", User{UserName: "Martha", Category: "Cook", Age: 52})
keys := o.Keys()
for _, k := range keys {
_, _ = o.Get(k)
_interface, _ := o.Get(k)
x := _interface.(User)
fmt.Println("Packs : ", x.UserName)
}
}
问题已解决。
更多关于Golang如何从orderedmap列表中获取数据的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
从 orderedmap 中获取数据需要使用类型断言将 interface{} 转换为具体类型。以下是修正后的代码示例:
package main
import (
"fmt"
"github.com/iancoleman/orderedmap"
)
type User struct {
UserName string
Category string
Age int
}
func main() {
o := orderedmap.New()
o.Set("Bryan", User{UserName: "Bryan", Category: "Human", Age: 33})
o.Set("Jane", User{UserName: "Jane", Category: "Rocker", Age: 25})
o.Set("Nancy", User{UserName: "Nancy", Category: "Mother", Age: 40})
o.Set("Chris", User{UserName: "Chris", Category: "Dude", Age: 19})
o.Set("Martha", User{UserName: "Martha", Category: "Cook", Age: 52})
// 方法1:遍历Keys获取数据
keys := o.Keys()
for _, key := range keys {
value, exists := o.Get(key)
if exists {
user := value.(User)
fmt.Printf("Key: %s, UserName: %s, Age: %d\n", key, user.UserName, user.Age)
}
}
// 方法2:直接通过键名获取特定数据
if bryan, exists := o.Get("Bryan"); exists {
user := bryan.(User)
fmt.Printf("\n获取特定用户: %s, Category: %s\n", user.UserName, user.Category)
}
// 方法3:获取所有数据并处理
fmt.Println("\n所有用户数据:")
for _, key := range o.Keys() {
val, _ := o.Get(key)
user := val.(User)
fmt.Printf("- %s: %+v\n", key, user)
}
}
输出结果:
Key: Bryan, UserName: Bryan, Age: 33
Key: Jane, UserName: Jane, Age: 25
Key: Nancy, UserName: Nancy, Age: 40
Key: Chris, UserName: Chris, Age: 19
Key: Martha, UserName: Martha, Age: 52
获取特定用户: Bryan, Category: Human
所有用户数据:
- Bryan: {UserName:Bryan Category:Human Age:33}
- Jane: {UserName:Jane Category:Rocker Age:25}
- Nancy: {UserName:Nancy Category:Mother Age:40}
- Chris: {UserName:Chris Category:Dude Age:19}
- Martha: {UserName:Martha Category:Cook Age:52}
关键点:
o.Get(key)返回(interface{}, bool),需要类型断言转换为User- 使用
value.(User)进行类型断言 - 第二个返回值
exists表示键是否存在 orderedmap保持插入顺序,o.Keys()按插入顺序返回键列表

