How to print the address of struct variable in go

前端 未结 1 1391
忘了有多久
忘了有多久 2021-01-06 12:00

I am new to go I want to print the address of struct variable in go here is my program

type Rect struct {
 width int
 name int 
}

func main() {
 r := Rect{         


        
1条回答
  •  小蘑菇
    小蘑菇 (楼主)
    2021-01-06 12:41

    When you print values using fmt.Println(), the default format will be used. Quoting from package doc of fmt:

    The default format for %v is:

    bool:                    %t
    int, int8 etc.:          %d
    uint, uint8 etc.:        %d, %#x if printed with %#v
    float32, complex64, etc: %g
    string:                  %s
    chan:                    %p
    pointer:                 %p
    

    For compound objects, the elements are printed using these rules, recursively, laid out like this:

    struct:             {field0 field1 ...}
    array, slice:       [elem0 elem1 ...]
    maps:               map[key1:value1 key2:value2 ...]
    pointer to above:   &{}, &[], &map[]
    

    The address of a struct value is the last line, so it is treated special and thus printed using the &{} syntax.

    If you want to print its address, don't use the default format, but use a format string and specify you want the address (pointer) explicitly with the %p verb:

    fmt.Printf("%p\n", &r)
    

    This will output (try it on the Go Playground):

    0x414020
    

    0 讨论(0)
提交回复
热议问题