有没有更好的方法来处理可变大小的片段?

cas*_*iel 4 arrays go slice

请看下面的代码

names := make([]string, 0, 100)
names = append(names, "Jack")
names = append(names, "Jacob")
// adding many names in here
Run Code Online (Sandbox Code Playgroud)

鉴于这样的情况:我会从其他地方得到这些名字,在此之前我不知道它的大小.所以我需要一个包含这些名称的动态数组.上面的代码是我提出的方式.我很想知道是否有更优雅的方式来做到这一点.

如果我这样初始化

names := make([]string, 100, 200)
// then I use append in here
// I would get first 100 elements as empty, the append start at index 101.
Run Code Online (Sandbox Code Playgroud)

我想这会浪费在记忆上.我是静态编程语言的新手,所以如果这篇文章中有任何错误的概念,请指出.

Ric*_*kyA 7

只是声明类型,然后为其分配附加的切片:

package main

import "fmt"

func main() {
    var names []string
    names = append(names, "foo")
    names = append(names, "bar")
    fmt.Println(names)
}
Run Code Online (Sandbox Code Playgroud)

产量:

>> [foo bar]
Run Code Online (Sandbox Code Playgroud)

如果您正在使用它的机制,这里有一个很好的博客文章.