
package main
import (
"fmt"
"time"
)
func main() {
x := [...]int{1, 2, 3}
y := x
y[0] = 4
fmt.Printf("&x: %p, &y: %p\n", &x, &y)
fmt.Printf("x: %v, y: %v\n", x, y)
m := []int{1, 2, 3}
n := m
n[0] = 4
fmt.Printf("&m: %p, &n: %p\n", &m, &n)
fmt.Printf("m: %v, n: %v\n", m, n)
slice := []int{1, 2, 3, 4, 5, 6}
fmt.Printf("slide len: %d, cap: %d\n", len(slice), cap(slice))
subSlice := slice[1:4]
fmt.Printf("subSlide len: %d, cap: %d\n", len(subSlice), cap(subSlice))
slice = append(slice, 7)
fmt.Printf("slide len: %d, cap: %d\n", len(slice), cap(slice))
slice = append(slice, 8, 9, 10, 11, 12, 13)
fmt.Printf("slide len: %d, cap: %d\n", len(slice), cap(slice))
i := []int{1, 2, 3}
j := i[:]
j[0] = 4
fmt.Printf("&i: %p, &j: %p\n", &i, &j)
fmt.Printf("i: %v, j: %v\n", i, j)
a := []int{1, 2, 3}
b := append(a, 4, 5, 6)
b[0] = 4
fmt.Printf("a: %v, b: %v\n", a, b)
c := append(a)
c[0] = 2
d := a[:2]
d = append(d, 7)
fmt.Printf("a: %v, c: %v, d: %v\n", a, c, d)
fmt.Printf("[]int{} len: %d, cap: %d\n", len([]int{}), cap([]int{}))
testCopy()
benchmarkArrayVSSlice()
}
func testCopy() {
a := []int{1, 2, 3, 4, 5}
b := make([]int, 2, 4)
n := copy(b, a)
fmt.Printf("copied from a to b: %d\n", n)
fmt.Printf("b: %v\n", b)
b[0] = 4
fmt.Printf("a: %v, b: %v\n", a, b)
}
func benchmarkArrayVSSlice() {
a := [10000]int{}
b := make([]int, 10000)
var s, e time.Time
s = time.Now()
for range a {
}
e = time.Now()
fmt.Printf("loop array: %d\n", e.Sub(s).Nanoseconds())
s = time.Now()
for range b {
}
e = time.Now()
fmt.Printf("loop slice: %d\n", e.Sub(s).Nanoseconds())
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?