blob: 813ed92a082451caade3ce28dc4875308522264d [file] [log] [blame]
// run
// Copyright 2020 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package main
import (
"fmt"
"unsafe"
)
type Pair[F1, F2 any] struct {
f1 F1
f2 F2
}
func main() {
p := Pair[int32, int64]{1, 2}
if got, want := unsafe.Sizeof(p.f1), uintptr(4); got != want {
panic(fmt.Sprintf("unexpected f1 size == %d want %d", got, want))
}
if got, want := unsafe.Sizeof(p.f2), uintptr(8); got != want {
panic(fmt.Sprintf("unexpected f2 size == %d want %d", got, want))
}
type MyPair struct { f1 int32; f2 int64 }
mp := MyPair(p)
if mp.f1 != 1 || mp.f2 != 2 {
panic(fmt.Sprintf("mp == %#v want %#v", mp, MyPair{1, 2}))
}
}