pointers - 为什么Go的package标志使用指针?

标签 pointers 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()
    }
}

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

最佳答案

这是因为在创建之后需要为其分配值。操作顺序为:

  • 创建变量var n = flag.Bool("n", false, "omit trailing newline")现在该值为false。
  • flag.Parse()分配值。现在为变量分配了作为命令行参数传递的值。
  • 关于pointers - 为什么Go的package标志使用指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60736758/

    相关文章:

    c - C语言中的指针和赋值函数

    arrays - 用方括号解释函数指针参数

    go - VS Code,如何显示堆栈跟踪

    go - 在go lang中使用一个函数的变量在另一个函数中

    c++ - 在 ROOT 中迭代绘制 TEllipse

    C# - 更改函数内的数组值

    go - 什么时候使用 make vs 内联 slice 初始化器?

    go - 为什么runtime.Gosched有时不起作用?

    c - TDataset --> 指向行列矩阵的指针?

    go - 在 Go 中使用测试依赖项但防止导出它们的最佳方法