登录
首页 >  Golang >  Go问答

制作可动态调整大小/长度/容量的切片的方法

来源:stackoverflow

时间:2024-03-11 09:00:25 294浏览 收藏

本篇文章主要是结合我之前面试的各种经历和实战开发中遇到的问题解决经验整理的,希望这篇《制作可动态调整大小/长度/容量的切片的方法》对你有很大帮助!欢迎收藏,分享给更多的需要的朋友学习~

问题内容

我似乎能够使用动态大小/容量/长度/任何内容创建一个切片:

cleaned := []interface{}{}

我怎样才能用 make() 做同样的事情?我试过这个:

cleaned := make([]interface{})

但它想要我包含一个长度?

缺少 len 参数


解决方案


你有两种方法:

  1. 使用 cleaned := make([]interface{},0) 并调用 cleaned =append(cleaned, your_data)
  2. 声明一个空数组:var clean []interface{}{}

例如,

package main

import (
    "fmt"
)

func main() {
    {
        cleaned := []interface{}{}
        fmt.println(len(cleaned), cap(cleaned), cleaned)
    }

    // or

    {
        cleaned := make([]interface{}, 0)
        fmt.println(len(cleaned), cap(cleaned), cleaned)
    }

    // or

    {
        cleaned := make([]interface{}, 0, 0)
        fmt.println(len(cleaned), cap(cleaned), cleaned)
    }
}

演示:https://play.golang.org/p/qndsxIKWjEp

输出:

0 0 []
0 0 []
0 0 []

参考:

The Go Programming Language Specification:Making slices, maps and channe

这是一个不同的问题。原因很清楚。

例如,

package main

import (
    "fmt"
)

func main() {
    {
        cleaned := []interface{}{}
        fmt.println(len(cleaned), cap(cleaned), cleaned, cleaned == nil)
    }

    // or

    {
        cleaned := make([]interface{}, 0)
        fmt.println(len(cleaned), cap(cleaned), cleaned, cleaned == nil)
    }

    // or

    {
        cleaned := make([]interface{}, 0, 0)
        fmt.println(len(cleaned), cap(cleaned), cleaned, cleaned == nil)
    }

    // or

    {
        var cleaned []interface{}
        fmt.println(len(cleaned), cap(cleaned), cleaned, cleaned == nil)
    }
}

演示:https://play.golang.org/p/9cZOOS2F9qI

输出:

0 0 [] false
0 0 [] false
0 0 [] false
0 0 [] true

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>