Golang获取值时遇到问题怎么解决

Golang获取值时遇到问题怎么解决 我无法获取值 https://play.golang.org/p/7BkXfksp_m6

提前致谢

3 回复

以下代码示例展示了如何获取您的数据:https://play.golang.org/p/w-XQ1_vZJm9

您对此有任何疑问吗?

更多关于Golang获取值时遇到问题怎么解决的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


你反序列化的JSON与你的结构体不匹配

type Person struct {
              
                 key  string
                 value  string
         }

请参考上面的playground示例。

但是你也可以通过使用嵌套结构体定义在一个类型中定义JSON结构体。示例:

type GoogleLocationResponse struct {
	Results []struct {
		Geometry struct {
			Location struct {
				Lattitude float32 `json:"lat"`
				Logitude  float32 `json:"lng"`
			} `json:"location"`
		} `json:"geometry"`
	} `json:"results"`
	Status string `json:"status"`
}

在你的代码中,问题出现在尝试从 map 中获取值时使用了不正确的语法。具体来说,你使用了 m["Answer"] 但缺少了接收返回值的变量。在 Go 语言中,从 map 获取值有两种方式:一种是使用单返回值形式(仅返回值,如果键不存在则返回零值),另一种是使用双返回值形式(返回值和布尔值表示键是否存在)。以下是修复后的代码示例:

package main

import "fmt"

func main() {
    m := make(map[string]int)
    m["Answer"] = 42
    fmt.Println("The value:", m["Answer"])

    // 单返回值形式:如果键不存在,返回零值
    value := m["Answer"]
    fmt.Println("Value using single return:", value)

    // 双返回值形式:检查键是否存在
    value, exists := m["Answer"]
    if exists {
        fmt.Println("Value using double return:", value)
    } else {
        fmt.Println("Key does not exist")
    }

    // 尝试获取不存在的键
    value, exists = m["Nonexistent"]
    if exists {
        fmt.Println("Value for nonexistent key:", value)
    } else {
        fmt.Println("Key 'Nonexistent' not found")
    }
}

在这个示例中:

  • 我使用 m["Answer"] 直接获取值并打印。
  • 通过单返回值形式将值赋给变量 value
  • 通过双返回值形式检查键是否存在,避免潜在的错误。

如果你的原始代码有其他问题,请确保 map 已正确初始化,并且键的类型匹配。运行修复后的代码应该能正确获取值。

回到顶部