Go语言 在围棋中使用flag的指针

4sup72z8  于 2023-11-14  发布在  Go
关注(0)|答案(2)|浏览(92)

我想知道这个token是否是 *string类型,然后我们通过引用得到值。但是如果它已经被解引用了,为什么我还需要再次解引用它呢?

func mustToken() string {

    token := flag.String("t", "", "token for access to tg bot")

    flag.Parse()

    if *token == "" {
        log.Fatal("token isnt specified")
    }
    return *token
}

字符串
我试着谷歌,但不明白TBH。

kgsdhlau

kgsdhlau1#

在Go语言中,当你定义一个string变量时,它默认为""。当你从输入中解析数据时,如果你不使用指针,如果用户没有提供值,或者显式提供"",你会得到一个空字符串。
如果用户指定--token "",或者根本不指定标志,则两者都将导致token = ""
当使用指针时,如果用户没有提供标志,token的值将是nil。所以你知道用户是否提供了标志。

e5nqia27

e5nqia272#

下面是上面的程序中发生的事情:
1.对flag.String的调用分配一个string变量并注册该变量、名称和默认值,并返回一个指向已分配变量的指针。
1.对flag.parse的调用解析命令行并将值写入注册的字符串变量。
1.表达式*token解引用从flag.String返回的指针以获取注册的字符串变量的值。程序使用表达式*token两次,因为程序访问该值两次。

相关问题