为什么 Go 的包标志使用指针?

考虑以下代码gopl.io/ch2/echo4


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()

    }

}

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


动漫人物
浏览 99回答 1
1回答

qq_笑_17

这是因为它们需要在创建后被赋值。动作顺序为:创建变量var n = flag.Bool("n", false, "omit trailing newline")现在的值是假的。用 赋值flag.Parse()。变量现在被赋值为命令行参数。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go