Go面试集锦

作者: ironbox_boy | 来源:发表于2017-08-31 20:51 被阅读59次
1.interface与nil的比较(具体参考)
package main
import (
    "fmt"
)
type People interface {
    Show()
}
type Student struct{}

func (stu *Student) Show() {
}

func live() People {
    var stu *Student
    return stu
}
func main() {
    if live() == nil {
        fmt.Println("AAAAAAA")
    } else {
        fmt.Println(live())
        fmt.Println("BBBBBBB")
    }
}
//  Output: BBBBBBB
//  ##在对interface实例化中interface{}中会存储对应的类型指针和值指针,So比较会返回false。
//  ##打印live()后也是nil,其实过程中是做了转化。
2.panic与defer之争
package main
import (
    "fmt"
)
func main() {
    defer func() { fmt.Println("A") }()
    defer func() { fmt.Println("B") }()
    defer func() { fmt.Println("C") }()
    panic("触发异常")
    defer func() { fmt.Println("D") }()
}
//  Output : 
//  C
//  B
//  A
//  panic: 触发异常 ...
//  ##defer是栈式执行,out:CBA;panic之前,正常输出,之后异常。
3.range循环对象变量地址误区
package main
import (
    "fmt"
)
func main() {
    pase_student()
}
type student struct {
    Name string
    Age  int
}
func pase_student() {
    m := make(map[string]*student)
    stus := []student{
        {Name: "zhou", Age: 24},
        {Name: "li", Age: 23},
        {Name: "wang", Age: 22},
    }
    fmt.Println(stus)
    for _, stu := range stus {
        m[stu.Name] = &stu
    }
    fmt.Println(m)
}
//  output :
//  [{zhou 24} {li 23} {wang 22}]
//  map[zhou:0xc42000a0e0 li:0xc42000a0e0 wang:0xc42000a0e0]
//  ##打印过程可以看出m中键的值地址一样,因为stu是一个变量,三次都把一个变量的地址赋值给对应键。
4.slice的初始化和append的语法
package main
import(
    "fmt"
)
func main() {
    s := make([]int, 3)
    fmt.Println(s)
    s = append(s, 1, 2, 3)
    fmt.Println(s)
}
//  Output:
//  [0 0 0]
//  [0 0 0 1 2 3]
//  ##首先slice初始化会为0(非基本类型为nil),append顾名思义是追加的意思。

相关文章

  • Go面试集锦

    1.interface与nil的比较(具体参考) 2.panic与defer之争 3.range循环对象变量地址误...

  • 点评:我亲历过的中英文文档工程师面试 (持续更新中...)

    马上要准备TW面试的小伙伴们,为你们奉上满满干货: 面试考核点 英文TW面试题集锦 中文TW面试题集锦 面试考核点...

  • 面试集锦

    HTML5重点data-属性 在html4时代,给标签添加单独的索引,如index=1;这样添加,后来用js去获取...

  • 面试集锦

    1、哪些情况下用copy修饰 为什么 weak是怎样实现的 OC里消息发送机制是怎样的 消息发送机制看这里 2、...

  • 面试集锦

    一、数据结构与算法基础 说一下几种常见的排序算法和分别的复杂度。 用Java写一个冒泡排序算法 描述一下链式存储结...

  • 面试集锦

    一、常见的HTTP相应状态码 200:请求被正常处理204:请求被受理但没有资源可以返回206:客户端只是请求资源...

  • 面试集锦

    1.步骤 注册数据库驱动 建立数据库连接 创建一个Statement(声明) 执行SQL语句 处理结果集 关闭数据...

  • 面试集锦

    (金财互联) 1、多线程状态的几种异常2、mq怎么保证顺序消费3、大事务小事务4、什么场景用到lambda5、My...

  • Android主流框架面试准备

    MVP Android MVP架构搭建史上最全的Android MVP模式架构面试题集锦Android面试题-架构...

  • Jmeter自动化测试-参数及文件上传混合参数

    API接口: Jmeter配置: 执行: 面试集锦:https://gitee.com/wbcoding/inte...

网友评论

  • 6c04b382626a:第四题输出应该是:
    [0 0 0 0 0]
    [0 0 0 0 0 1 2 3]
    Jancd:@dawing 谁说4个0?自己打印试试
    ironbox_boy:@dawing 哈哈 我以为是三个来:stuck_out_tongue:

本文标题:Go面试集锦

本文链接:https://www.haomeiwen.com/subject/hrycjxtx.html