返回顶部
首页 > 资讯 > 后端开发 > GO >Python 的 list.pop() 方法的 Go 习惯用法是什么?
  • 306
分享到

Python 的 list.pop() 方法的 Go 习惯用法是什么?

2024-04-05 00:04:09 306人浏览 八月长安
摘要

golang不知道大家是否熟悉?今天我将给大家介绍《python 的 list.pop() 方法的 Go 习惯用法是什么?》,这篇文章主要会讲到等等知识点,如果你在看完本篇文章后,有更好的建议或者发

golang不知道大家是否熟悉?今天我将给大家介绍《python 的 list.pop() 方法的 Go 习惯用法是什么?》,这篇文章主要会讲到等等知识点,如果你在看完本篇文章后,有更好的建议或者发现哪里有问题,希望大家都能积极评论指出,谢谢!希望我们能一起加油进步!

问题内容

Python中,我有以下内容:

i = series.index(s) # standard python list.index() function
tmp = series.pop(i)
blah = f(tmp)
series.append(tmp)

在将其转换为 go 时,我正在寻找一种类似的方法,通过索引从切片中检索项目,对其执行某些操作,然后将原始项目放在切片的末尾。

从这里,我得到了以下结果:

i = index(series, s) // my custom index function...
tmp, series = series[i], series[i+1:]
blah := f(tmp)
series = append(series, tmp)

但这在列表末尾失败:

panic: runtime error: slice bounds out of range

我如何惯用地将这个 slice.pop() 翻译成 go?


解决方案


链接文档中的 "Cut" trick 可以满足您的要求:

xs := []int{1, 2, 3, 4, 5}

i := 0 // any valid index, however you happen to get it.
x := xs[i]
xs = append(xs[:i], xs[i+1:]...)
// now "x" is the ith element and "xs" has the ith element removed.

请注意,如果您尝试从获取和剪切操作中创建一行,您将得到意外的结果,因为在评估其他表达式之前调用函数的多重赋值的棘手行为

i := 0
x, xs := xs[i], append(xs[:i], xs[i+1:]...)
// xxx: x=2, xs=[]int{2, 3, 4, 5}

您可以通过将元素访问操作包装在任何函数调用中来解决此问题,例如恒等函数:

i := 0
id := func(z int) { return z }
x, xs := id(xs[i]), append(xs[:i], xs[i+1:]...)
// ok: x=1, xs=[]int{2, 3, 4, 5}

但是,此时使用单独的分配可能会更清楚。

为了完整起见,“cut”函数及其用法可能如下所示:

func cut(i int, xs []int) (int, []int) {
  y := xs[i]
  ys := append(xs[:i], xs[i+1:]...)
  return y, ys
}

t, series := cut(i, series)
f(t)
series = append(series, t)

如果你想编写一个以类似于 python 的方式执行 pop() 的函数,那么你必须传入一个指向该对象的指针,以便可以修改该对象,因为 pop 既返回值又更改列表

func pop(alist *[]int) int {
   f:=len(*alist)
   rv:=(*alist)[f-1]
   *alist=(*alist)[:f-1]
   return rv
}

func main() {
n:=[]int{1,2,3,4,5}
fmt.Println(n)
last:=pop(&n)
fmt.Println("last is",last)
fmt.Printf("list of n is now %v\n", n)

本篇关于《Python 的 list.pop() 方法的 Go 习惯用法是什么?》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注编程网公众号!

您可能感兴趣的文档:

--结束END--

本文标题: Python 的 list.pop() 方法的 Go 习惯用法是什么?

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

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

猜你喜欢
  • Python 的 list.pop() 方法的 Go 习惯用法是什么?
    Golang不知道大家是否熟悉?今天我将给大家介绍《Python 的 list.pop() 方法的 Go 习惯用法是什么?》,这篇文章主要会讲到等等知识点,如果你在看完本篇文章后,有更好的建议或者发...
    99+
    2024-04-05
  • Golang 中处理 nil 和 error 的惯用方法是什么?
    从现在开始,我们要努力学习啦!今天我给大家带来《Golang 中处理 nil 和 error 的惯用方法是什么?》,感兴趣的朋友请继续看下去吧!下文中的内容我们主要会涉及到等等知识点,如果在阅读本文...
    99+
    2024-04-04
  • UNIX的10个好习惯是什么
    这篇文章主要介绍“UNIX的10个好习惯是什么”,在日常操作中,相信很多人在UNIX的10个好习惯是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”UNIX的10个好习惯是什么”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-16
  • 写Python时的5个坏习惯分别是什么
    写Python时的5个坏习惯分别是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。注意:示例代码在 Python 3.6 环境下编写1 用列表作函数的默认参数...
    99+
    2023-06-17
  • Go调度器学习之系统调用的方法是什么
    本篇内容主要讲解“Go调度器学习之系统调用的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Go调度器学习之系统调用的方法是什么”吧!1. 系统调用下面,我们将以一个简单的文件打开的系统...
    99+
    2023-07-05
  • React错误的习惯用法分析详解
    目录过多的声明state问题解决方法不必要的state问题解决方法过多的useEffect问题解决方法请求竞争问题问题解决方法使用三元表达式代替&&使用 &&...
    99+
    2023-01-09
    React错误用法习惯 React错误用法
  • Python常用的魔法方法是什么
    这篇文章将为大家详细讲解有关Python常用的魔法方法是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、python魔法方法Python的魔法方法会在特定的情况下自动调用,且他们的方法名通常被双下划...
    99+
    2023-06-15
  • Python魔法方法的作用是什么
    Python魔法方法是一些特殊的方法,用于在特定的情况下自动调用。它们以双下划线()开头和结尾,如init,str__等。魔法方法允...
    99+
    2023-10-23
    Python
  • go枚举的使用方法是什么
    在Go语言中,枚举可以通过const关键字定义常量组来实现。虽然Go语言本身并没有枚举类型,但可以使用常量组来达到枚举的效果。 下面...
    99+
    2024-03-06
    go
  • GO HTMLEscape的用法是什么
    The HTMLEscape function is used to escape special characters in a ...
    99+
    2023-10-22
    GO
  • go多线程使用的方法是什么
    在Go语言中,多线程的概念被称为Goroutine。Goroutine是一种轻量级的线程,由Go语言的运行时系统管理。创建一个Gor...
    99+
    2024-03-04
    go
  • go连接mysql的方法是什么
    今天小编给大家分享一下go连接mysql的方法是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、mysql建表创建us...
    99+
    2023-07-05
  • 应用Python pylint的方法是什么
    应用Python pylint的方法是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Python pylint作为计算机语言的常用语言,它的功能是不能忽视的,如果你对P...
    99+
    2023-06-17
  • python wpf使用的方法是什么
    Python没有官方支持的WPF库,但可以通过使用IronPython来使用WPF。IronPython是Python的一种实现,它...
    99+
    2023-10-08
    python wpf
  • wpf调用python的方法是什么
    在WPF中调用Python方法,可以通过以下几种方式:1. 使用Python标准库的`subprocess`模块,通过调用Pytho...
    99+
    2023-10-12
    wpf python
  • Python write()方法的作用是什么
    Python的`write()`方法是用来将指定的字符串写入文件中的方法。`write()`方法可以接受一个字符串作为参数,并将该字...
    99+
    2023-10-12
    Python
  • python调用perl的方法是什么
    Python可以通过subprocess模块调用Perl方法。下面是一个示例代码:pythonimport subprocess# ...
    99+
    2023-10-18
    perl python
  • python uiautomation的使用方法是什么
    Python的uiautomation库是一个用于进行图形用户界面自动化测试的工具,可以模拟用户操作来执行各种操作。以下是使用Pyt...
    99+
    2024-04-02
  • Go中Hoverfly的用法是什么
    在Go语言中,Hoverfly是一个用于模拟和捕获HTTP/TCP流量的工具。它可以用于编写HTTP/TCP客户端的测试和仿真,以及...
    99+
    2024-02-29
    Go Hoverfly
  • go语言中ffmpeg使用的方法是什么
    Go语言中使用FFmpeg的方法有两种:使用CGO调用FFmpeg的C语言库,或者使用Go语言封装的FFmpeg库。 使用CGO调...
    99+
    2024-02-29
    go语言 ffmpeg
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作