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]
本題と関係ないけど、配列(と、たぶんスライスも)を指すポインタから要素へのアクセスは * をつけなくてできるんだな。