gpt4 book ai didi

pointers - 返回文字与指针

转载 作者:IT王子 更新时间:2023-10-29 01:58:22 26 4
gpt4 key购买 nike

尝试制作 slice ,但在字面量和指针方面遇到问题。看起来当附加到我的 slice 时它不喜欢被传递指针的事实。例如,我有一个名为 components 的包类型,并包含 Component 类型。见下文。

package components

import ()

type Component struct {
Name string
Element string
Color string
}

func (c *Component) SetName(name string) {
c.Name = name
}

func (c *Component) SetElement(element string) {
c.Element = element
}

func (c *Component) SetColor(color string) {
c.Color = color
}

func (c *Component) GetName() string {
return c.Name
}

func (c *Component) GetColor() string {
return c.Color
}

func (c *Component) GetElement() string {
return c.Element
}

func NewComponent(name string, color string, element string) *Component {
c := &Component{}
c.SetName(name)
c.SetColor(color)
c.SetElement(element)
return c
}

现在我正在尝试制作一个 slice 以将我所有的组件放入我正在制作施法组件,如 Snow、Sand、Sunbeam、Springwater 等。

    //Creating SpringWater Component with Setters
SpringWater := components.Component{}
SpringWater.SetName("SpringWater")
SpringWater.SetColor("Blue")
SpringWater.SetElement("Water")

//Creating Sand Component using the Constructor
Sand := components.NewComponent("Sand", "Red", "Earth")

错误发生在此处: compSlice := make([]components.Component, 5) compSlice = append(compSlice, SpringWater, Sand)

错误:无法将 Sand 用作类型 (*components.Component) 作为类型 components.Component 追加。

现在使用 setter 并直接设置字段我可以将它添加到一个 slice 但是使用它返回一个*指针的方法并且 slice 将不符合。我只是不理解并且遇到了一个难题。请记住,我是编程的新手,基本上来自脚本,所以请原谅我,我也看到过类似的问题,但在这种情况下不明白。

最佳答案

Go 在几个地方隐藏了值和指针之间的区别,但不是所有地方。

在这种情况下,您将不得不取消引用 Sand 并编写 compSlice = append(compSlice, SpringWater, *Sand)

关于pointers - 返回文字与指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41271087/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com