栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

将字符串切片转换为自定义类型的切片

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

将字符串切片转换为自定义类型的切片

的基础类型

Card
可能与的基础类型
string
(本身是
string
)相同,但是的基础类型
[]Card
与的基础类型不同
[]string
(因此适用于
Hand
)。

您不能将的片转换

T1
为的片
T2
,这与它们具有什么基础类型
T1
无关,如果不相同
T2
,就不能。为什么?因为不同元素类型的切片可能具有不同的内存布局(内存大小不同)。例如,类型的元素
[]byte
每个占用1个字节。每个元素
[]int32
占用4个字节。显然,即使所有值都在范围内,也不能将一个转换为另一个
0..255

但是要追溯到根本:如果需要切片

Card
s,为什么首先要创建切片
string
s?您所创建的 类型
Card
,因为它 不是
一个
string
(或至少不只是一个
string
)。如果是这样,而您需要
[]Card
,那么
[]Card
首先创建,所有问题都将消失:

value := []Card{"a", "b", "c"}firstHand := NewHand(value)fmt.Println(firstHand)

请注意,您仍然可以

Card
使用未 类型化的 常量
string
文字
来初始化的切片,因为它可用于初始化其基础类型为的任何类型
string
。如果要涉及类型化的类型
string
常量或非常量表达式
string
,则需要进行显式转换,例如下面的示例:

s := "ddd"value := []Card{"a", "b", "c", Card(s)}

如果您有一个

[]string
,则需要从中手动构建一个
[]Card
。没有“更轻松”的方式。您可以创建一个辅助
toCards()
函数,以便可以在需要的任何地方使用它。

func toCards(s []string) []Card {    c := make([]Card, len(s))    for i, v := range s {        c[i] = Card(v)    }    return c}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/373225.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号