Golang中如何从map中获取键名

Golang中如何从map中获取键名 我正在从文件中读取数据并将其保存到映射中,那么有没有一种方法可以只打印出映射中的键名呢?

谢谢,

3 回复

是的,这就是我最终采取的做法。不过还是感谢你的帮助。

更多关于Golang中如何从map中获取键名的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


你可以遍历这个映射

kvs := map[string]string{"a": "apple", "b": "banana"}
for k, v := range kvs {
    fmt.Printf("%s -> %s\n", k, v)
}

在Golang中,你可以通过遍历映射来获取所有的键名。以下是一个示例代码:

package main

import "fmt"

func main() {
    // 创建一个示例映射
    m := map[string]int{
        "apple":  5,
        "banana": 3,
        "cherry": 7,
    }

    // 方法1: 使用for-range循环获取键名
    fmt.Println("方法1 - 使用for-range循环:")
    for key := range m {
        fmt.Println(key)
    }

    // 方法2: 将键名收集到切片中
    fmt.Println("\n方法2 - 收集到切片中:")
    keys := make([]string, 0, len(m))
    for key := range m {
        keys = append(keys, key)
    }
    fmt.Println("所有键名:", keys)

    // 方法3: 如果需要按特定顺序打印键名
    fmt.Println("\n方法3 - 按字母顺序打印:")
    for key := range m {
        keys = append(keys, key)
    }
    // 对键名进行排序
    // sort.Strings(keys) // 需要导入"sort"包
    for _, key := range keys {
        fmt.Println(key)
    }
}

输出结果:

方法1 - 使用for-range循环:
apple
banana
cherry

方法2 - 收集到切片中:
所有键名: [apple banana cherry]

方法3 - 按字母顺序打印:
apple
banana
cherry

如果你需要从文件中读取数据并保存到映射中,然后只打印键名,代码结构类似:

package main

import (
    "fmt"
    "strings"
)

func main() {
    // 模拟从文件读取的数据
    fileContent := "name=John\nage=30\ncity=New York"
    
    // 创建映射来存储数据
    dataMap := make(map[string]string)
    
    // 解析数据并存入映射
    lines := strings.Split(fileContent, "\n")
    for _, line := range lines {
        parts := strings.Split(line, "=")
        if len(parts) == 2 {
            dataMap[parts[0]] = parts[1]
        }
    }
    
    // 打印所有键名
    fmt.Println("映射中的键名:")
    for key := range dataMap {
        fmt.Println(key)
    }
}

输出:

映射中的键名:
name
age
city

这些方法都可以有效地从Golang的映射中获取并打印键名。

回到顶部