gpt4 book ai didi

Go:扩展未命名类型,例如 []string

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

我对 Go 中的类型别名有点困惑。

我已经阅读了这个相关的 SO 问题 - Why can I type alias functions and use them without casting? .

据我所知,如果底层结构相同,则未命名和命名变量可以相互赋值。

我想弄清楚的是,我可以通过命名来扩展未命名的类型吗?就像这样:

type Stack []string

func (s *Stack) Print() {
for _, a := range s {
fmt.Println(a)
}
}

这给了我错误cannot range over s (type *Stack)
尝试将其转换为 []string,不行。

我知道下面的代码有效 - 这是我应该做的方式吗?如果是这样,我很想知道为什么上面的方法不起作用,以及声明的用途是什么,例如 type Name []string

type Stack struct {
data []string
}

func (s *Stack) Print() {
for _, a := range s.data {
fmt.Println(a)
}
}

最佳答案

你应该取消引用指针 s

type Stack []string

func (s *Stack) Print() {
for _, a := range *s {
fmt.Println(a)
}
}

关于Go:扩展未命名类型,例如 []string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26355488/

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