首页 > 解决方案 > 如何使用值初始化映射

问题描述

我在 Go 中有一个多线地图创建和值设置。

type Animal struct {
  food, locomotion, sound string
}

type AnimalInterface interface {
  Eat()
  Move()
  Speak()
}
animals := make(map[string]Animal)
animals["cow"] = Animal{"grass", "walk", "moo"}
animals["bird"] = Animal{"worms", "fly", "peep"}
animals["snake"] = Animal{"mice", "slither", "hsss"}

我更喜欢一步完成创建和初始化。这不起作用......我应该如何解决它?

animals := map[string]Animal{
  "cow": Animal{"grass", "walk", "moo"}
  "bird": Animal{"worms", "fly", "peep"}
  "snake": Animal{"mice", "slither", "hsss"}
}

编辑 添加逗号

  animals := map[string]Animal{
    "cow": Animal{"grass", "walk", "moo"},
    "bird": Animal{"worms", "fly", "peep"},
    "snake": Animal{"mice", "slither", "hsss"}
  }
❯ go run animals.go
# command-line-arguments
./animals.go:109:47: syntax error: unexpected newline, expecting comma or }

标签: go

解决方案


错字。您在地图元素后错过了逗号。

package main

import (
    "fmt"
)

type Animal struct {
    food, locomotion, sound string
}

type AnimalInterface interface {
    Eat()
    Move()
    Speak()
}

func main() {
    animals := map[string]Animal{
        "cow": Animal{"grass", "walk", "moo"},
        "bird": Animal{"worms", "fly", "peep"},
        "snake": Animal{"mice", "slither", "hsss"},
    }

    fmt.Println(animals)
}

操场


推荐阅读