Pointers 为什么Go';s包标志是否使用指针?

Pointers 为什么Go';s包标志是否使用指针?,pointers,go,Pointers,Go,请考虑下面的代码 我感兴趣的是为什么变量n和sep是指向标志变量的指针,而不是普通变量类型。这是因为它们在创建后需要赋值。行动顺序如下: 创建变量var n=flag.Bool(“n”,false,“省略尾随换行符”)该值现在为false 使用flag.Parse()赋值。变量现在被指定为作为命令行参数传递的值 如果不是指针,则flag.Parse无法修改其值。 package main import ( "flag" "fmt" "strings" ) var n

请考虑下面的代码


我感兴趣的是为什么变量
n
sep
是指向标志变量的指针,而不是普通变量类型。

这是因为它们在创建后需要赋值。行动顺序如下:

  • 创建变量
    var n=flag.Bool(“n”,false,“省略尾随换行符”)
    该值现在为false
  • 使用
    flag.Parse()
    赋值。变量现在被指定为作为命令行参数传递的值

  • 如果不是指针,则flag.Parse无法修改其值。
    package main
    
    import (
        "flag"
        "fmt"
        "strings"
    )
    
    var n = flag.Bool("n", false, "omit trailing newline")
    var sep = flag.String("s", " ", "separator")
    
    func main() {
        flag.Parse()
        fmt.Print(strings.Join(flag.Args(), *sep))
        if !*n {
            fmt.Println()
        }
    }