Golang如何从用户输入获取多个值并存储到切片中

Golang如何从用户输入获取多个值并存储到切片中 我想创建一个切片,用于存储用户在运行时输入的字符串值。字符串的总数量是未定义的。

4 回复

到目前为止你尝试了什么?你当前实现中面临的问题是什么?

更多关于Golang如何从用户输入获取多个值并存储到切片中的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


已通过以下方式解决:

func main() {
    var n int
    fmt.Scanln(&n)
    var ls []string
    reader := bufio.NewReader(os.Stdin)
    for i := 0; i < n; i++ {
        text, _ := reader.ReadString('\n')
        ls = append(ls, text)
    }
}
package main

import (
    "fmt"
)

func main() {
    var n int
    fmt.Scanf("%d", &n)
    var ls []string
    for i := 0; i < n; i++ {
        a, _ := fmt.Scanf("%s", &i)
        ls = append(ls, string(a))
        fmt.Println(a)
    }
    fmt.Println(ls)
}

这是我的代码,我知道使用“&i”是错误的,但我无法解决应该用什么来替代它,以便将值传递给变量a,然后将其追加到字符串切片中。

在Golang中,可以使用bufio.Scanner从标准输入读取多行文本,动态存储到切片中。以下是实现示例:

package main

import (
    "bufio"
    "fmt"
    "os"
    "strings"
)

func main() {
    scanner := bufio.NewScanner(os.Stdin)
    var inputs []string
    
    fmt.Println("请输入字符串(输入空行结束):")
    
    for scanner.Scan() {
        line := strings.TrimSpace(scanner.Text())
        if line == "" {
            break
        }
        inputs = append(inputs, line)
    }
    
    if err := scanner.Err(); err != nil {
        fmt.Fprintln(os.Stderr, "读取输入出错:", err)
    }
    
    fmt.Printf("共输入 %d 个字符串:\n", len(inputs))
    for i, v := range inputs {
        fmt.Printf("[%d] %s\n", i+1, v)
    }
}

如果需要从单行读取多个以空格分隔的值:

package main

import (
    "bufio"
    "fmt"
    "os"
    "strings"
)

func main() {
    scanner := bufio.NewScanner(os.Stdin)
    
    fmt.Print("请输入多个字符串(空格分隔):")
    scanner.Scan()
    
    inputs := strings.Fields(scanner.Text())
    
    fmt.Printf("共输入 %d 个字符串:\n", len(inputs))
    for i, v := range inputs {
        fmt.Printf("[%d] %s\n", i+1, v)
    }
}

使用append函数可以动态扩展切片容量,无需预先定义大小。第一个示例会持续读取输入直到遇到空行,第二个示例则从单行中解析多个值。

回到顶部