go问题(eface & iface)
以下代码打印出来什么内容,说出为什么。 package main import ( "fmt" ) type People interface { Show() } type Student struct{} func (stu *Student) Show() { } func liv……
go问题(map赋值)
以下代码能否编译? package main import "fmt" type Student struct { Name string } var list map[string]Student func main() { list = make(map[string]Student) ……
go问题(init)
init() 函数是什么时候执行的? 答案解析: init() 函数是 Go 程序初始化的一部分。Go 程序初始化先于 main 函数,由 runtime 初始化每个导入的包,初始化顺序不是按照从上到下的导入顺序,而是按照解析的依赖关系,没有依赖的包最先初始化。 每个包首先初始化包作用域的常量和变量(常量优先于变量),然后执行包的 init() 函数。同一个……
go问题:map 的 key 为什么是无序的?
map 在扩容后,会发生 key 的搬迁,原来落在同一个 bucket 中的 key,搬迁后,有些 key 就要远走高飞了(bucket 序号加上了 2^B)。而遍历的过程,就是按顺序遍历 bucket,同时按顺序遍历 bucket 中的 key。搬迁后,key 的位置发生了重大的变化,有些 key 飞上高枝,有些 key 则原地不动。这样,遍历 map 的……
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问题(多重赋值)
下面代码输出正确的是? 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)
下面这段代码输出什么? 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顺序)
下面这段代码输出什么? 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的值赋值)
下面代码输出什么? 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)
下面这段代码输出什么? const ( a = iota b = iota ) const ( name = "name" c = iota d = iota ) func main() { fmt.Println(a) fmt.Println(b) fmt.Println(c)……
- 1
- 2