调用函数的时候加不加* 有什么区别?

package main

import "flag"
import "fmt"

func main() {

    test := "shit"
    var fuck *string

    // 这么调用 test就永远是默认值
    test = *flag.String("a", "default", "test flag args")

    // 这么调用 fuck就会变成-a 参数的值
    fuck = flag.String("a", "default", "test flag args")

    //
    fmt.Println(*fuck)
    fmt.Println(test)


}

调用函数的时候 这个*有什么区别?
为啥行为会不一样? *不就是个取值符么?

阅读 3.2k
2 个回答

我自己的问题
值在flag.parse() 时候改变,所以*提前取值了,是不会变的

和c语言一样的,指针取值

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题