为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
动漫人物 2022-05-23 15:44:08
考虑以下代码gopl.io/ch2/echo4package mainimport (    "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是指向标志变量的指针,而不是普通的变量类型。
查看完整描述

1 回答

?
qq_笑_17

TA贡献1818条经验 获得超7个赞

这是因为它们需要在创建后被赋值。动作顺序为:

  1. 创建变量var n = flag.Bool("n", false, "omit trailing newline")现在的值是假的。

  2. 用 赋值flag.Parse()。变量现在被赋值为命令行参数。


查看完整回答
反对 回复 2022-05-23
  • 1 回答
  • 0 关注
  • 98 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信