iis服务器助手广告
返回顶部
首页 > 资讯 > 精选 >从切片创建类型
  • 662
分享到

从切片创建类型

编译错误string类overflow 2024-02-06 05:02:37 662人浏览 安东尼
摘要

问题内容 我想创建一个像堆栈一样的数据类型。我想在“顶部”添加和删除条目,并能够将其打印出来。在此示例中,xpath 类型用于遍历 xml 文档并跟踪当前路径。 所以我创建了一个xpa

问题内容

我想创建一个像堆栈一样的数据类型。我想在“顶部”添加和删除条目,并能够将其打印出来。在此示例中,xpath 类型用于遍历 xml 文档并跟踪当前路径。

所以我创建了一个xpath[]string类型,并编写了相应的函数,即:push() pop()和string()。

我的问题是类型失去了状态,这让我有点困惑,因为我认为切片是引用类型。另外,如果我尝试将函数更改为指针接收器,我会遇到几个编译错误。此时为了解决这个问题,我只是将 []string 更改为具有单个 []string 字段的结构。尽管它仍然困扰着我,但我无法仅使用切片作为基础类型来使其工作。

正确的做法是什么?

package main

import (
    "fmt"
    "strings"
)

type xPath []string

func (xp xPath) push(entry string) {
    xp = append(xp, entry)
}

func (xp xPath) String() string {
    sb := strings.Builder{}
    sb.WriteString("/")
    sb.WriteString(strings.Join(xp, "/"))
    return sb.String()
}

func main() {
    xp := xPath{}
    xp.push("rss")
    xp.push("channel")
    xp.push("items")
    fmt.Println(xp)

    // Output: /
    // Wanted: /rss/channel/items
}


正确答案


您的推送功能没有执行任何操作。

正确的推送功能:

func (xp *xPath) push(entry string) {
    *xp = append(*xp, entry)
}

在您想要更改其值(例如使用索引)的情况下,切片是引用类型。

另一方面,如果您想重新分配它们并替换整个切片,则应该使用指针。

关于堆栈,还有一些更好的方法: 看看这个问题。

以上就是从切片创建类型的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: 从切片创建类型

本文链接: https://www.lsjlt.com/news/561215.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 从切片创建类型
    问题内容 我想创建一个像堆栈一样的数据类型。我想在“顶部”添加和删除条目,并能够将其打印出来。在此示例中,xpath 类型用于遍历 xml 文档并跟踪当前路径。 所以我创建了一个xpa...
    99+
    2024-02-06
    编译错误 string类 overflow
  • 从另一个切片创建切片但类型不同
    问题内容 是否有一种简单易读的方法来创建切片的副本但使用另一种类型? 例如,我收到了 int32 的切片 (mySlice []int32),但我需要它的副本,并且该副本应为 int64: copyOfMyS...
    99+
    2024-02-02
  • golang修改切片类型
    Golang是一种强类型语言,对于变量的类型要求非常严格。当我们需要修改切片类型时,往往需要进行相应的类型转换。本文将介绍如何在Golang中修改切片类型。什么是切片?在Golang中,切片是一种比数组更为灵活、方便的数据结构。切片可以看作...
    99+
    2023-05-14
  • Golang:创建一个 strutcs 切片
    从现在开始,我们要努力学习啦!今天我给大家带来《Golang:创建一个 strutcs 切片》,感兴趣的朋友请继续看下去吧!下文中的内容我们主要会涉及到等等知识点,如果在阅读本文过程中有遇到不清楚的...
    99+
    2024-04-05
  • 迭代混合类型切片
    php小编百草迭代混合类型切片是一种基于迭代器和混合类型的切片操作方法。它提供了一种灵活的方式来处理不同类型的数据集合,无论是数组、对象还是其他类型。通过迭代混合类型切片,我们可以快速...
    99+
    2024-02-09
  • golang-切片slice的创建方式
    在创建一个新的切片是都会先创建一个长度为len的数组,并为其开辟一个cap长度为cap的额外空间,所以在cap范围类增加元素,数组的起始地址不会改变,否则会创建一个新的数组,即起始的...
    99+
    2024-04-02
  • python中切片类型是什么
    这篇文章主要介绍python中切片类型是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、list切片如果第一个索引是0,还可以省略。>>> L[:3]['Michael...
    99+
    2023-06-15
  • Go 中的切片类型转换
    php小编苹果为大家介绍Go语言中的切片类型转换。在Go语言中,切片是一种动态数组,常用于存储和操作一组相同类型的元素。切片类型转换是指将一个类型的切片转换为另一个类型的切片,这在实际...
    99+
    2024-02-10
    go语言
  • 数组切片创建数组副本
    数组切片可创建数组副本,语法为:array[start:end],其中 start 是起始索引,end 是结束索引(不包括)。它不会修改原始数组,但会创建一个引用指向原始元素。对切片数组...
    99+
    2024-04-27
    编程 数组 python
  • Golang 泛型排除切片或数组类型
    php小编小新今天为大家带来一篇关于Golang泛型的文章。在Golang中,泛型是一项备受期待的功能,然而最新的提案中却排除了对切片或数组类型的支持。本文将为大家解析这个决定的原因,...
    99+
    2024-02-13
  • 从任何值类型的字典中获取字符串键的切片
    学习Golang要努力,但是不要急!今天的这篇文章《从任何值类型的字典中获取字符串键的切片》将会介绍到等等知识点,如果你想深入学习Golang,可以关注我!我会持续更新相关文章的,希望对大家都能有所...
    99+
    2024-04-05
  • Go interface{} 转切片类型的实现方法
    遇到这样一个情况想将变量v转化为[]string类型 var v interface{} a := []interface{}{"1", "2"} v = a // v 这时还是in...
    99+
    2024-04-02
  • mysql number类型如何创建
    在MySQL中,您可以使用以下语法创建一个number类型的列: CREATE TABLE table_name ( col...
    99+
    2024-04-09
    mysql
  • 反射 - 获取单个切片元素的类型
    小伙伴们对Golang编程感兴趣吗?是否正在学习相关知识点?如果是,那么本文《反射 - 获取单个切片元素的类型》,就很适合你,本篇文章讲解的知识点主要包括。在之后的文章中也会多多分享相关知识点,希望...
    99+
    2024-04-04
  • 关于golang类型创建规范
    php小编香蕉将为您介绍关于golang类型创建规范。在Golang中,类型创建是非常重要的,它决定了变量的数据类型及其可操作的方法。在创建类型时,我们需要遵循一些规范,以确保代码的可...
    99+
    2024-02-10
  • 一文详解Golang中的切片数据类型
    目录含义定义三个要素切片与数组的区别示例代码切片内存分布切片定义分类数组生成切片示例代码切片索引直接声明切片定义语法代码示例使用make定义切片常用操作长度计算容量计算判断是否为空切...
    99+
    2024-04-02
  • Go 中将 int 切片转换为自定义 int 切片指针类型的函数
    php小编新一今天为大家介绍的是在Go语言中将int切片转换为自定义int切片指针类型的函数。在Go语言中,切片(slice)是一个非常常用的数据类型,可以动态地增加或减少元素个数。有...
    99+
    2024-02-08
    go语言
  • 如何附加到元素类型不是golang中命名类型的切片
    php小编香蕉为您介绍如何附加到元素类型不是golang中命名类型的切片。在Golang中,我们可以使用内置的append函数将元素附加到切片中,但是如果切片的元素类型不是命名类型,即...
    99+
    2024-02-09
  • mysql主从搭建切换
    环境: 172.30.249.156 percona5.6.27 主机名:tr-mysql 跑着生产环境的应用的虚拟机 192.168.129.153 percona5...
    99+
    2024-04-02
  • 怎么创建一个创建MySQL数据库中的datetime类型
    今天小编给大家分享一下怎么创建一个创建MySQL数据库中的datetime类型的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作