|
|
|
package main
|
|
|
|
|
|
|
|
func init() {
|
|
|
|
println("init")
|
|
|
|
}
|
|
|
|
|
|
|
|
func main() {
|
|
|
|
println("main")
|
|
|
|
println("v1:", v1)
|
|
|
|
println("v2:", v2.x, v2.y)
|
|
|
|
println("v3:", len(v3), cap(v3), v3[0], v3[3])
|
|
|
|
println("v4:", len(v4), v4 == nil)
|
|
|
|
println("v5:", len(v5), v5 == nil)
|
|
|
|
println("v6:", v6)
|
|
|
|
println("v7:", cap(v7), string(v7))
|
|
|
|
println("v8:", v8)
|
|
|
|
println("v9:", len(v9), v9[0], v9[1], v9[2])
|
|
|
|
|
|
|
|
println(uint8SliceSrc[0])
|
|
|
|
println(uint8SliceDst[0])
|
|
|
|
println(intSliceSrc[0])
|
|
|
|
println(intSliceDst[0])
|
|
|
|
}
|
|
|
|
|
|
|
|
type (
|
|
|
|
t2 struct {
|
|
|
|
x int
|
|
|
|
y int
|
|
|
|
}
|
|
|
|
)
|
|
|
|
|
|
|
|
var (
|
|
|
|
v1 = 3
|
|
|
|
v2 = t2{2, 5}
|
|
|
|
v3 = []int{2, 3, 5, 7}
|
|
|
|
v4 map[string]int
|
|
|
|
v5 = map[string]int{}
|
|
|
|
v6 = float64(v1) < 2.6
|
|
|
|
v7 = []byte("foo")
|
|
|
|
v8 string
|
|
|
|
v9 []int
|
|
|
|
|
|
|
|
uint8SliceSrc = []uint8{3, 100}
|
|
|
|
uint8SliceDst []uint8
|
|
|
|
intSliceSrc = []int16{5, 123, 1024}
|
|
|
|
intSliceDst []int16
|
|
|
|
|
|
|
|
someList *linkedList
|
|
|
|
someBigList *bigLinkedList
|
|
|
|
)
|
|
|
|
|
|
|
|
type linkedList struct {
|
|
|
|
prev *linkedList
|
|
|
|
next *linkedList
|
|
|
|
v int // arbitrary value (don't care)
|
|
|
|
}
|
|
|
|
|
|
|
|
func init() {
|
|
|
|
someList = &linkedList{
|
|
|
|
v: -1,
|
|
|
|
}
|
|
|
|
for i := 0; i < 3; i++ {
|
|
|
|
prev := someList
|
|
|
|
someList = &linkedList{
|
|
|
|
v: i,
|
|
|
|
prev: prev,
|
|
|
|
}
|
|
|
|
prev.next = someList
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
type bigLinkedList struct {
|
|
|
|
prev *bigLinkedList
|
|
|
|
next *bigLinkedList
|
|
|
|
v int
|
|
|
|
buf [100]*int
|
|
|
|
}
|
|
|
|
|
|
|
|
func init() {
|
|
|
|
// Create a circular reference.
|
|
|
|
someBigList = &bigLinkedList{
|
|
|
|
v: -1,
|
|
|
|
}
|
|
|
|
for i := 0; i < 3; i++ {
|
|
|
|
prev := someBigList
|
|
|
|
someBigList = &bigLinkedList{
|
|
|
|
v: i,
|
|
|
|
prev: prev,
|
|
|
|
}
|
|
|
|
prev.next = someBigList
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func init() {
|
|
|
|
uint8SliceDst = make([]uint8, len(uint8SliceSrc))
|
|
|
|
copy(uint8SliceDst, uint8SliceSrc)
|
|
|
|
|
|
|
|
intSliceDst = make([]int16, len(intSliceSrc))
|
|
|
|
copy(intSliceDst, intSliceSrc)
|
|
|
|
|
|
|
|
v8 = sliceString("foobarbaz", 3, 8)
|
|
|
|
v9 = sliceSlice([]int{0, 1, 2, 3, 4, 5}, 2, 5)
|
|
|
|
}
|
|
|
|
|
|
|
|
func sliceString(s string, start, end int) string {
|
|
|
|
return s[start:end]
|
|
|
|
}
|
|
|
|
|
|
|
|
func sliceSlice(s []int, start, end int) []int {
|
|
|
|
return s[start:end]
|
|
|
|
}
|