首页  >  文章  >  后端开发  >  不能使用 struct 作为类型 struct {...}

不能使用 struct 作为类型 struct {...}

WBOY
WBOY转载
2024-02-10 19:06:09670浏览

不能使用 struct 作为类型 struct {...}

php小编小新在这篇文章中将介绍一个重要的注意事项:在PHP中,不能使用"struct"作为类型。这是由于PHP语言本身的限制,不支持类似于C语言中的"struct"类型定义。在PHP中,我们可以使用类(class)来定义自定义的数据结构,以及相关的属性和方法。通过使用类的方式,我们可以更灵活和强大地操作数据,实现更复杂的逻辑和功能。因此,在编写PHP代码时,请记得避免使用"struct"作为类型定义,而是使用类来替代。这样能够更好地符合PHP语言的特性和规范,使代码更易读、易懂和易维护。

问题内容

我有这个代码:

type Iterable[T any] struct {
    Val  T
    End  T
    Next func() (bool, T)
}

func acceptStructWithNext[T any](r struct{ Next func() (bool, T) }) {
    fmt.Println(r)
}

func main() {

    iterable := Iterable[int]{
        Val: 0,
        End: 100,
        Next: func() (bool, int) {
            return true, 0
        },
    }

    acceptStructWithNext[int](iterable) // error is here

}

我收到此编译错误:

<code>
Cannot use 'iterable' (type Iterable[int]) as the type struct {...}
</code>

我认为结构类型应该允许这种类型的事情 - 我哪里出错了?

解决方法

是的,但是 Go 没有“结构类型”。在某种程度上,结构类型的好处可以通过接口的隐式满足规则获得。但这仅适用于界面

请参阅https://www.php.cn/link/2a2f98d3597419498e4d734d8c2dd106

假设 Go 会有像教科书一样的结构类型结构类型。

以上是不能使用 struct 作为类型 struct {...}的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文转载于:stackoverflow.com。如有侵权,请联系admin@php.cn删除