golang-面试题(填空题)

本文详细介绍了Go语言的基本语法,包括变量声明、数组、切片、指针、map和函数的使用,并通过示例代码展示了其在并发编程中的应用。此外,还探讨了Go语言测试规范以及goroutine的启动。对于初学者,本文提供了全面的Go语言入门指导。
摘要由CSDN通过智能技术生成

1.【初级】声明一个整型变量i__________

参考答案:var i int

2.【初级】声明一个含有10个元素的整型数组a__________

参考答案:var a [10]int

3.【初级】声明一个整型数组切片s__________

参考答案:var s []int

4.【初级】声明一个整型指针变量p__________

参考答案:var p *int

5.【初级】声明一个key为字符串型value为整型的map变量m__________

参考答案:var m map[string]int

6.【初级】声明一个入参和返回值均为整型的函数变量f__________

参考答案:var f func(a int) int

7.【初级】声明一个只用于读取int数据的单向channel变量ch__________

参考答案:var ch <-chan int

8.【初级】假设源文件的命名为slice.go,则测试文件的命名为__________

参考答案:slice_test.go

9.【初级】 go test要求测试函数的前缀必须命名为__________

参考答案:Test

10.【中级】下面的程序的运行结果是__________

for i := 0; i < 5; i++ {
    defer fmt.Printf("%d ", i)
}

参考答案:4 3 2 1 0

13.【中级】下面的程序的运行结果是__________

func main() {
    x := 1
    {
       x := 2
       fmt.Print(x)
    }
    fmt.Println(x)
}

参考答案:21

解析:
大括号代表一个独立的作用域,大括号结束就会被释放作用域中的内存

21.【中级】下面的程序的运行结果是__________

func main() {
    strs := []string{"one","two", "three"} 
    for _, s := range strs {
       go func() {
           time.Sleep(1 * time.Second)
           fmt.Printf("%s ", s)
       }()
    }
    time.Sleep(3 * time.Second)
}

参考答案:three three three

解析
就算不sleep,也会三个three, 因为会先遍历完

32.【中级】下面的程序的运行结果是__________

func main() {  
    x := []string{"a", "b","c"}
    for v := range x {
       fmt.Print(v)
    }
}

参考答案:012

解析
只用一个变量接收是序号

38.【中级】下面的程序的运行结果是__________

func main() {  
    x := []string{"a", "b","c"}
    for _, v := range x {
       fmt.Print(v)
    }
}

参考答案:abc

44.【初级】下面的程序的运行结果是__________

func main() {  
    i := 1
    j := 2
    i, j = j, i
    fmt.Printf("%d%d\n", i, j)
}

参考答案:21

50.【初级】下面的程序的运行结果是__________

func incr(p *int) int {
    *p++  
    return *p
}

func main() {  
    v := 1
    incr(&v)
    fmt.Println(v)
}

参考答案:2

59.【初级】启动一个goroutine的关键字是__________

参考答案:go

60.【中级】下面的程序的运行结果是__________

type Slice []int
    func NewSlice() Slice {
    return make(Slice, 0)
}

func (s* Slice) Add(elem int) *Slice {
    *s = append(*s, elem)
    fmt.Print(elem)
    return s
}

func main() {  
    s := Slice()
    defer s.Add(1).Add(2)
    s.Add(3)
}

参考答案:132

解析
会事先将 最后一个API的主语的值进行计算,准确defer的是一个函数a.Add()后在a.Add就是主语

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值