OK, I understand it somehow but I want to make sure my understanding is 
correct.

There are two types of constant "untyped constant" and "typed constant".

1. An untyped constant has a size but it's not specific which means an 
untyped constant takes some memory.

> fmt.Println(100)


2. A typed constant has a specific size which means a typed constant takes 
a specific amount of memory.

> fmt.Println(int(100))


Is my understanding correct?

2019年1月31日木曜日 9時05分32秒 UTC+9 伊藤和也:
>
> An interger constant is "int" type and takes "8" bytes memory on 64-bit 
> system.
>
> fmt.Println(unsafe.Sizeof(100)) // 8
>> fmt.Println(reflect.TypeOf(100)) // int
>
>
> and an "int32" type value takes "4" bytes.
>
> var num int32
>> fmt.Println(unsafe.Sizeof(num)) // 4
>
>
> So in this case below, Is the memory usage "12" bytes in total? (Question 
> 1)
>
> var num int32 = 100
>>          |                  |
>>     4 bytes  +  8 bytes = 12 bytes
>
>
> and in this case below, Is the memory usage "16" bytes in total? (Question 
> 2)
> because the integer constant "100" is "8" bytes first then it's converted 
> to "int32" which is "4" bytes.
>
> var num int32 = int32(100)
>>          |                 |         |
>>    4 bytes + 4 bytes + 8 bytes = 16 bytes  
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to