dpxw7293
2015-10-20 17:17
浏览 137
已采纳

在golang中,&和*有什么区别?

Can someone explain the difference between & and * in GO lang .. and provide examples of when & and * would be used to illustrate the difference? From what I have read, they both relate to accessing a variables memory location however i'm not sure when to use & or *.

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

6条回答 默认 最新

  • duanping6698 2015-10-21 02:18
    最佳回答

    Here is a very simple example, that illustrates how & and * are used. Note that * can be used for two different things 1) to declare a variable to be a pointer 2) to dereference a pointer.

    package main
    
    import "fmt"
    
    func main() {
        b := 6 
    
        var b_ptr *int // *int is used delcare variable
                       // b_ptr to be a pointer to an int
    
        b_ptr = &b     // b_ptr is assigned value that is the address
                           // of where variable b is stored
    
        // Shorhand for the above two lines is:
        // b_ptr := &b
    
        fmt.Printf("address of b_ptr: %p
    ", b_ptr)
    
        // We can use *b_ptr get the value that is stored
        // at address b_ptr, or dereference the pointer 
        fmt.Printf("value stored at b_ptr: %d
    ", *b_ptr)
    
    }
    

    Result:

    address of b_ptr: 0xc82007c1f0
    value stored at b_ptr: 6
    
    评论
    解决 无用
    打赏 举报
查看更多回答(5条)

相关推荐 更多相似问题