为了账号安全,请及时绑定邮箱和手机立即绑定

如何制作具有动态大小/长度/容量的切片

如何制作具有动态大小/长度/容量的切片

Go
MYYA 2023-08-14 17:22:09
我似乎能够使用以下命令创建一个具有动态大小/容量/长度/任何内容的切片:cleaned := []interface{}{}我怎样才能做同样的事情make()?我试过这个:cleaned := make([]interface{})但它想要我包括一个长度?缺少 len 参数
查看完整描述

2 回答

?
ibeautiful

TA贡献1993条经验 获得超5个赞

你有两种方法:

  1. 使用cleaned := make([]interface{},0)and 调用cleaned = append(cleaned, your_data)

  2. 声明一个空数组:var cleaned []interface{}{}


查看完整回答
反对 回复 2023-08-14
?
Cats萌萌

TA贡献1805条经验 获得超9个赞

cleaned := []interface{}{}

我怎样才能用 make() 做同样的事情?


例如,


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 []


声明空切片时,更喜欢

var t []string

超过

t := []string{}

前者声明一个 nil 切片值,而后者非 nil 但长度为零。它们在功能上是等效的——它们的 len 和 cap 都为零——但 nil 切片是首选样式。

. . .

例如,

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


查看完整回答
反对 回复 2023-08-14
  • 2 回答
  • 0 关注
  • 134 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信