# Golang 从标准输入获取内容

By [Robin](https://paragraph.com/@robin-8) · 2023-05-04

---

1.  fmt.Scan()函数：该函数从标准输入中读取用户输入，以空格分隔，将读取的内容存储在传递给函数的参数中。例如：
    

    package main
    
    import "fmt"
    
    func main() {
        var name string
        fmt.Print("请输入您的名字：")
        fmt.Scan(&name)
        fmt.Printf("您好，%s！", name)
    }
    

bufio包：该包提供了一个bufio.Reader类型，它可以从标准输入中读取用户输入。例如：

    package main
    
    import (
        "bufio"
        "fmt"
        "os"
    )
    
    func main() {
        reader := bufio.NewReader(os.Stdin)
        fmt.Print("请输入您的名字：")
        name, _ := reader.ReadString('\n')
        fmt.Printf("您好，%s！", name)
    }
    

以上两种方式都可以从标准输入中获取内容。第一种方式使用起来比较简单，但是只能读取以空格分隔的内容；第二种方式可以读取任意长度的内容，但是使用起来稍微复杂一些。

使用flag包来解析命令行参数。flag包提供了很多函数来解析命令行参数，其中包括从标准输入读取内容的函数。例如：

    package main
    
    import (
        "flag"
        "fmt"
    )
    
    func main() {
        var name string
        flag.StringVar(&name, "name", "", "请输入您的名字")
        flag.Parse()
        fmt.Printf("您好，%s！", name)
    }

---

*Originally published on [Robin](https://paragraph.com/@robin-8/golang-8)*
