gpt4 book ai didi

go - 如何在golang中创建一个不固定长度的 slice

转载 作者:IT王子 更新时间:2023-10-29 02:25:38 26 4
gpt4 key购买 nike

有什么方法可以在 go 中创建一个不固定长度 slice 吗?例如,我想抓取目录中的所有文件名(content/)填充到 [] string slice 中。

content/ 目录包含:

$-> tree content/
content/
├── 1.txt
├── 2.txt
└── tmp

这是我目前得到的:

package main

import (
"fmt"
"io/ioutil"
)

func listFile() []string {
list := make([]string, 100)
// as you can see, I make a slice length as 100, but that is not appropriate.

files, _ := ioutil.ReadDir("content")
i := 0
for _, f := range files{
list[i] = f.Name()
i = i+1
}
return list
}

func main(){
fmt.Print(listFile())
}

我想要实现的是一种在 java 中模拟 ArrayList 行为的方法,我可以简单地使用 list.add() 并且不关心长度.

GoLang 中的 slice 可以做到吗?

谢谢。

最佳答案

Go slice 不能做到这一点,但是 append() 函数会增加你的 slice,因为追加元素变成了 O(1) 摊销操作:

func listFile() []string {
// make a slice of length 0
list := make([]string, 0)

files, _ := ioutil.ReadDir("content")
for _, f := range files {
// append grows list as needed
list = append(list, f.Name())
}

return list
}

关于go - 如何在golang中创建一个不固定长度的 slice ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27793165/

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