Jquery中文网 www.jquerycn.cn
Jquery中文网 >  后端编程  >  Go语言  >  正文 Golang面试题总结

Golang面试题总结

发布时间:2021-05-27   编辑:www.jquerycn.cn
jquery中文网为您提供Golang面试题总结等资源,欢迎您收藏本站,我们将为您提供最新的Golang面试题总结资源

面试题纠错

  1. 数组作为参数传递是,传递的是值,但切片作为参数传递时,传递的是地址值,所以数组中的值是不可更改的,但是切片中的值可以修改。
    func changes(i []int) []int{
    	i[0]=0
    	return i
    }
    
    func changea(i [3]int) [3]int{
    	i[0]=0
    	return i
    }
    func main(){
    	a:=[3]int{1,2,3} //数组a
    	s:=[]int{4,5,6}  //切片s
    	changea(a)
    	fmt.Println(a)
    	changes(s)
    	fmt.Println(s)
    }
    
    输出结果:
    [1 2 3]
    [0 5 6]
    
    Process finished with exit code 0
    

     
  2. golang中的map是hash的表现,每次遍历的顺序可以不一样
  3. Go中可以抛出一个panic异常,然后再defer中通过recover()捕获这个异常,然后正常处理,如果同时有多个defer,那么异常会被最近的recover()捕获并正常处理。recover必须在derfer函数中运行,多层嵌套依然无效,必须在defer函数中直接调用才有效。
    package main
    
    import (
        "fmt"
    )
    
    func main() {
        defer_call()
    }
    
    func defer_call() {
    
        defer func() {
            fmt.Println("打印前")
        }()
    
        defer func() { // 必须要先声明defer,否则recover()不能捕获到panic异常
            if err := recover();err != nil {
                fmt.Println(err) //err 就是panic传入的参数
            }
            fmt.Println("打印中")
        }()
    
        defer func() {
    
            fmt.Println("打印后")
        }()
    
        panic("触发异常")
    }
    输出内容为:
    
    打印后
    触发异常
    打印中
    打印前
    
    Process finished with exit code 0

     

  4. init()方法在任何包中都可以出现,建议保重只含一个init()函数比较好,容易理解,但是main()只能出现在Package main中,go程序会自动调用init和main。
  5. golang中的方法和函数是不一样的,官方解释:方法是包含了接收者的函数
    函数的固定格式:func 函数名 (参数)(可选) 返回值(可选) {}
    方法在func之后是接受着而不是函数名: func (p *myint/p myint) mydouble() int {}
    接收者好比一个类,这些方法是他的成员函数
  6. golang中的引用类型包括,切片,map,channel和interface
  7. main 不能带参数,没有返回值必须在main包,可以使用flag包获取和解析命令行参数
  8. 当为变量赋nil值时,变量必须有类型,interface{} error都行,string为空是"",不是nil
  9. s:={1,2,3,     换行一定要加,否则报错
          4,5,5,}
  10. golang中没有前置自增自减 i、--i,只可以后置自增自减
  11. 源文件为slice.go,那么测试文件名为:slice_test.go,go test 要求测试函数前缀必须为Test
  12. golang中的闭包问题,先来解释下什么是闭包
    闭包:闭包是指可以包含自由(未绑定特定对象)变量的代码块:这些变量不是这个代码块内或者任何全局上下文中定义的,而是在定义代码块中的环境中定义的(局部变量)
    在一个for range循环中如果你不带参数传值的话,那么取得值为循环的最后一个值,如果传递了值,则会输出处理之后的每个迭代中的值,但并不一定是按照顺序输出。例子可以查看关于golang闭包中所谓的“坑”,
到此这篇关于“Golang面试题总结”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
golang基础教程
Golang面试题总结
golang面试官:for select时,如果通道已经关闭会怎么样?如果select中只有一个case呢?
go golang 笔试题 面试题 笔试 面试
golang for循环_golang面试官:for select时,如果通道已经关闭会怎么样?如果select中只有一个case呢?...
Golang 在 VSCode 中的调试配置
后端面试(Golang)可能会碰上的附加智力题
golang整洁之道(一)
学习golang开始前的准备工作
【Golang 接口自动化00】为什么要用Golang做自动化?

上一篇:GOLANG环境安装 下一篇:使用 Go 添加文档
[关闭]