メモリの動的割り当て
new 関数は、動的にメモリを割り当ててそのアドレス、つまりポインタを返す。
var 変数名 *型 = new(型)
例を示そう。
package main
import "fmt"
func main() {
var p *int = new(int)
var q *float64 = new(float64)
var a *[8]int = new([8]int)
fmt.Println(p)
fmt.Println(*p)
fmt.Println(q)
fmt.Println(*q)
fmt.Println(a)
fmt.Println(*a)
*p = 100
*q = 1.2345
a[0] = 10
a[7] = 80
fmt.Println(*p)
fmt.Println(*q)
fmt.Println(*a)
}
^o^ > go run dynamic_alloc.go
0xc042008210
0
0xc042008218
0
&[0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0]
100
1.2345
[10 0 0 0 0 0 0 80]
本題と関係ないけど、配列(と、たぶんスライスも)を指すポインタから要素へのアクセスは * をつけなくてできるんだな。
