Arrays 在Golang中,如何将循环的结果添加到未知大小的动态数组中?

Arrays 在Golang中,如何将循环的结果添加到未知大小的动态数组中?,arrays,go,Arrays,Go,我现在使用的示例从控制台获取输入,请求文件扩展名,比如.txt。它搜索当前目录中的文件,然后执行Println,将所有带有.txt的文件返回到屏幕上 对于返回的每个结果,如何将每个文件名放入一个数组(或一个切片?)中,然后在程序中访问每个值以操作每个文件。 它不需要是连续的 这是工作代码(我想是由Adam Ng修改的) 我调整了您的代码,使其将每个文件名放入字符串片段中,然后在末尾打印片段。另外,请记住,“files”变量中已经有一个文件列表 package main import ( "

我现在使用的示例从控制台获取输入,请求文件扩展名,比如.txt。它搜索当前目录中的文件,然后执行Println,将所有带有.txt的文件返回到屏幕上

对于返回的每个结果,如何将每个文件名放入一个数组(或一个切片?)中,然后在程序中访问每个值以操作每个文件。

它不需要是连续的

这是工作代码(我想是由Adam Ng修改的)


我调整了您的代码,使其将每个文件名放入字符串片段中,然后在末尾打印片段。另外,请记住,“files”变量中已经有一个文件列表

package main

import (
  "bufio"
  "fmt"
  "os"
  "path/filepath"
  //"bytes"
  //"io/ioutil"
)

func main() {

  lineScan := bufio.NewScanner(os.Stdin)
  var inputText string

  fmt.Print("Enter file extension to search for: .extension \n")
  lineScan.Scan()
  inputText = lineScan.Text()

  dirname := "." + string(filepath.Separator)

  d, err := os.Open(dirname)
  if err != nil {
    fmt.Println(err)
    os.Exit(1)
  }
  defer d.Close()

  files, err := d.Readdir(-1)
  if err != nil {
    fmt.Println(err)
    os.Exit(1)
  }

  fileList := make([]string, 0)
  for _, file := range files { 
    if file.Mode().IsRegular() {

      if filepath.Ext(file.Name()) == inputText {

        fmt.Println(file.Name())
        fileList = append(fileList, file.Name())
      }
    }
  }

  fmt.Println("File List: ", fileList)
}

我希望这对您有用。

我调整了您的代码,使其将每个文件名放入一段字符串中,然后在末尾打印该段。另外,请记住,“files”变量中已经有一个文件列表

package main

import (
  "bufio"
  "fmt"
  "os"
  "path/filepath"
  //"bytes"
  //"io/ioutil"
)

func main() {

  lineScan := bufio.NewScanner(os.Stdin)
  var inputText string

  fmt.Print("Enter file extension to search for: .extension \n")
  lineScan.Scan()
  inputText = lineScan.Text()

  dirname := "." + string(filepath.Separator)

  d, err := os.Open(dirname)
  if err != nil {
    fmt.Println(err)
    os.Exit(1)
  }
  defer d.Close()

  files, err := d.Readdir(-1)
  if err != nil {
    fmt.Println(err)
    os.Exit(1)
  }

  fileList := make([]string, 0)
  for _, file := range files { 
    if file.Mode().IsRegular() {

      if filepath.Ext(file.Name()) == inputText {

        fmt.Println(file.Name())
        fileList = append(fileList, file.Name())
      }
    }
  }

  fmt.Println("File List: ", fileList)
}

我希望这对您有用。

Go用于附加到切片。这就是你想要的吗?这个问题,实际上是基本的Go,将受益于更简洁的黑色代码,它只包括你尝试附加到循环中的一个片段。答案可能会简单得多。有关打开文件的详细信息与所述问题无关。Go用于附加到切片。这就是你想要的吗?这个问题,实际上是基本的Go,将受益于更简洁的黑色代码,它只包括你尝试附加到循环中的一个片段。答案可能会简单得多。关于打开文件的细节与前面提到的问题无关。我对你所做的有一个想法。我现在假设我可以在一段时间内使用文件列表,或者在for-each循环中使用文件列表来提取每个字符串并对其进行处理。如果您愿意的话,我想要一份参考文件或一个例子。@ArkhamAngel:最好的参考是,甚至是。我鼓励你仔细阅读,它涵盖了所有这些基本的围棋概念。这里有一个额外的资源供你参考。我对你所做的有一个想法。我现在假设我可以在一段时间内使用文件列表,或者在for-each循环中使用文件列表来提取每个字符串并对其进行处理。如果您愿意的话,我想要一份参考文件或一个例子。@ArkhamAngel:最好的参考是,甚至是。我鼓励您阅读,它涵盖了所有这些基本的围棋概念