• 欢迎访问周知博客,每周记录新知识
  • 祝各位学得开心!!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧
go问题(init)

go问题(init)

init() 函数是什么时候执行的? 答案解析: init() 函数是 Go 程序初始化的一部分。Go 程序初始化先于 main 函数,由 runtime 初始化每个导入的包,初始化顺序不是按照从上到下的导入顺序,而是按照解析的依赖关系,没有依赖的包最先初始化。 每个包首先初始化包作用域的常量和变量(常量优先于变量),然后执行包的 init() 函数。同一个……

go问题:map 的 key 为什么是无序的?

go问题:map 的 key 为什么是无序的?

map 在扩容后,会发生 key 的搬迁,原来落在同一个 bucket 中的 key,搬迁后,有些 key 就要远走高飞了(bucket 序号加上了 2^B)。而遍历的过程,就是按顺序遍历 bucket,同时按顺序遍历 bucket 中的 key。搬迁后,key 的位置发生了重大的变化,有些 key 飞上高枝,有些 key 则原地不动。这样,遍历 map 的……

go每日一题(range value)

go每日一题(range value)

下面这段代码输出什么,说明原因。 func main() { slice := []int{0,1,2,3} m := make(map[int]*int) for key,val := range slice { m[key] = &val } for k,v := range m { fmt.Print……

go问题(多重赋值)

go问题(多重赋值)

下面代码输出正确的是? func main() { i := 1 s := []string{"A", "B", "C"} i, s[i-1] = 2, "Z" fmt.Printf("s: %v \n", s) } A. s: ……

go问题(range)

go问题(range)

下面这段代码输出什么? func main() { var a = [5]int{1, 2, 3, 4, 5} var r [5]int for i, v := range a { if i == 0 { a[1] = 12 a[2] = 13 } r[i] = v } fmt.Println(&……

go语言问题(defer顺序)

go语言问题(defer顺序)

下面这段代码输出什么? func f(n int) (r int) { defer func() { r += n recover() }() var f func() defer f() f = func() { r += 2 } return n + 1 } func main() { ……

go问题(map的值赋值)

go问题(map的值赋值)

下面代码输出什么? type Math struct { x, y int } var m = map[string]Math{ "foo": Math{2, 3}, } func main() { m["foo"].x = 4 fmt.Println(m["foo&quo……

go语言问题(itoa)

go语言问题(itoa)

下面这段代码输出什么? const ( a = iota b = iota ) const ( name = "name" c = iota d = iota ) func main() { fmt.Println(a) fmt.Println(b) fmt.Println(c)……

go语言问题(len)

go语言问题(len)

在 Go语言爱好者周刊第 104 期有一道题目,以下代码输出什么: package main func main() { var x *struct { s [][32]byte } println(len(x.s[99])) } A:运行时 panic;B:32;C:编译错误;D:0 答案解析: 正确率只……

go语言问题(defer)

go语言问题(defer)

下面这段代码输出什么? func main() { a := 1 b := 2 defer calc("1", a, calc("10", a, b)) a = 0 defer calc("2", a, calc("20", a, b)) b = 1 ……