尝试将结构加入至结构数组(golang)

von4xj4u  于 2022-12-07  发布在  Go
关注(0)|答案(1)|浏览(174)

要求是从一个函数中添加一个结构体的“示例”,并将其添加到main中的结构体数组中。我尝试使用“append”,但它在数组上不起作用。我尝试使用切片方法(append)和指针,但它只会使我的代码变得最糟糕。我应该能够访问三个水果(结构体)数组中的所有元素以进行输出。谢谢!

package main

import "fmt"

type Fruit struct {
    name   string
    color  string
    weight float32
}

func newFruit(name string) (string, string, float32) {
    return name, "unk", 0
}

func main() {
    var basket [3]Fruit 
    var name string

    for i := 0; i < len(basket); i++ {
        fmt.Print("Enter name: ")
        fmt.Scanln(&name)
        basket[i] := newFruit(name) //<-- error: assignment mismatch, tried "=" but still not working
    }

    for i := 0; i < len(basket); i++ {
        fmt.Println("Name: ", i, ": ", basket[i].name)
        fmt.Println("Color: ", i, ": ", basket[i].color)
        fmt.Println("Weight: ", i, ": ", basket[i].weight)
    }
}
nkcskrwz

nkcskrwz1#

您的newFruit需要返回一个Fruit,而不是两个字符串和一个float 32。
例如:

func newFruit(name string) Fruit {
    return Fruit{name: name, color: "unk", weight: 0}
}

正如@mkopriva在评论中指出的,你也有一个错字:

basket[i] := newFruit(name)  // WRONG

应该是

basket[i] = newFruit(name)

相关问题