88 lines
1.2 KiB
Go
88 lines
1.2 KiB
Go
package main
|
|
|
|
func test() {}
|
|
|
|
// func
|
|
func init() {
|
|
fn1 := test
|
|
fn2 := func(i, j int) int { return i + j }
|
|
var n int
|
|
fn3 := func() { println(n) }
|
|
var fn4 func() int
|
|
assert(test != nil)
|
|
assert(fn1 != nil)
|
|
assert(fn2 != nil)
|
|
assert(fn3 != nil)
|
|
assert(fn4 == nil)
|
|
}
|
|
|
|
// array
|
|
func init() {
|
|
assert([0]float64{} == [0]float64{})
|
|
ar1 := [...]int{1, 2, 3}
|
|
ar2 := [...]int{1, 2, 3}
|
|
assert(ar1 == ar2)
|
|
ar2[1] = 1
|
|
assert(ar1 != ar2)
|
|
}
|
|
|
|
type T struct {
|
|
X int
|
|
Y int
|
|
Z string
|
|
V any
|
|
}
|
|
|
|
type N struct{}
|
|
|
|
// struct
|
|
func init() {
|
|
var n1, n2 N
|
|
var t1, t2 T
|
|
x := T{10, 20, "hello", 1}
|
|
y := T{10, 20, "hello", 1}
|
|
z := T{10, 20, "hello", "ok"}
|
|
assert(n1 == n2)
|
|
assert(t1 == t2)
|
|
assert(x == y)
|
|
assert(x != z)
|
|
assert(y != z)
|
|
}
|
|
|
|
// slice
|
|
func init() {
|
|
var a []int
|
|
var b = []int{1, 2, 3}
|
|
c := make([]int, 2)
|
|
d := make([]int, 0, 2)
|
|
assert(a == nil)
|
|
assert(b != nil)
|
|
assert(c != nil)
|
|
assert(d != nil)
|
|
b = nil
|
|
assert(b == nil)
|
|
}
|
|
|
|
// iface
|
|
func init() {
|
|
var a any = 100
|
|
var b any = struct{}{}
|
|
var c any = T{10, 20, "hello", 1}
|
|
x := T{10, 20, "hello", 1}
|
|
y := T{10, 20, "hello", "ok"}
|
|
assert(a == 100)
|
|
assert(b == struct{}{})
|
|
assert(b != N{})
|
|
assert(c == x)
|
|
assert(c != y)
|
|
}
|
|
|
|
func assert(cond bool) {
|
|
if !cond {
|
|
panic("failed")
|
|
}
|
|
}
|
|
|
|
func main() {
|
|
}
|