如何在 Go 中创建不固定长度的切片
How to create unfixed length slice in Go
我是 Go 新手,有 2 个问题:
1 假设我们有一个用 C# 编写的简单 for 循环:
static void Main(string[] args)
{
List<int> list = new List<int>();
for (int i = 1; i < 10000; i++)
{
if (i % 5 == 0 && i % 3 == 0)
{
list.Add(i);
}
}
foreach (int prime in list)
{
System.Console.WriteLine(prime);
}
Console.ReadKey();
}
如果我想在 Go 中做同样的事情,我将不得不使用切片。但是怎么做呢?
- 哪种变量声明形式更常用:
短格式 (s:= 3)
要么
长 (var s int = 3)?
1) 创建切片:
list := make([]int, 0)
附加到切片:
list = append(list, i)
2) 我认为你的第二个问题没有单一的答案。这取决于变量的使用方式和位置。
在 Go 中数组有它们的位置,但它们有点不灵活,所以你不会在 Go 代码中经常看到它们。不过,切片无处不在。它们以阵列为基础,提供强大的功能和便利。
切片的长度不固定。很灵活。
你可以声明一个空切片如下
list := make([]int, 0)
list := []int{}
var list []int
这里是你如何在 go 中正确的上述功能
package main
import (
"fmt"
)
func main() {
var list []int
for i:=0;i<10000;i++ {
if i %5 == 0 && i % 3 == 0 {
list = append(list, i)
}
}
for _, val := range list {
fmt.Println(val)
}
}
这里有戏linkplay
对于 2)
var foo int = 3 // I want a int variable
bar := foo // bar will be the same type with foo
我是 Go 新手,有 2 个问题:
1 假设我们有一个用 C# 编写的简单 for 循环:
static void Main(string[] args)
{
List<int> list = new List<int>();
for (int i = 1; i < 10000; i++)
{
if (i % 5 == 0 && i % 3 == 0)
{
list.Add(i);
}
}
foreach (int prime in list)
{
System.Console.WriteLine(prime);
}
Console.ReadKey();
}
如果我想在 Go 中做同样的事情,我将不得不使用切片。但是怎么做呢?
- 哪种变量声明形式更常用: 短格式 (s:= 3) 要么 长 (var s int = 3)?
1) 创建切片:
list := make([]int, 0)
附加到切片:
list = append(list, i)
2) 我认为你的第二个问题没有单一的答案。这取决于变量的使用方式和位置。
在 Go 中数组有它们的位置,但它们有点不灵活,所以你不会在 Go 代码中经常看到它们。不过,切片无处不在。它们以阵列为基础,提供强大的功能和便利。
切片的长度不固定。很灵活。
你可以声明一个空切片如下
list := make([]int, 0)
list := []int{}
var list []int
这里是你如何在 go 中正确的上述功能
package main
import (
"fmt"
)
func main() {
var list []int
for i:=0;i<10000;i++ {
if i %5 == 0 && i % 3 == 0 {
list = append(list, i)
}
}
for _, val := range list {
fmt.Println(val)
}
}
这里有戏linkplay
对于 2)
var foo int = 3 // I want a int variable
bar := foo // bar will be the same type with foo