go 函数参数nil_Go 面试每天一篇(第 22 天)

Go语言题目解答与新题探讨
文章分享了Go语言假期前题目的解答,如nil切片与空切片声明、函数参数为interface{}的情况等,还给出了f()函数返回参数相关解析。同时给出了今天的题目,包括代码语法问题及return后defer语句执行情况,答案将在下篇文章给出。

点击上方蓝色“Golang来啦”关注我哟

加个“星标”,天天 15 分钟,一起学 Go

三天假期一晃而过,愉快而又短暂!学习、工作更有劲儿了,加油!a7f77e277d9ebe2d52d5dc8ffa4aafce.png

有些同学真勤奋,放假期间都还在答题,向你们学习!一起来看下假期前的题目解答:

1.参考答案及解析:A 声明的是 nil 切片;B 声明的是长度和容量都为 0 的空切片。第一种切片声明不会分配内存,优先选择。

2.参考答案及解析:BD。函数参数为 interface{} 时可以接收任何类型的参数,包括用户自定义类型等,即使是接收指针类型也用 interface{},而不是使用 *interface{}。

永远不要使用一个指针指向一个接口类型,因为它已经是一个指针。

3.参考答案及解析:

A. &S{"foo"} 
B. *f() 或者 f()

f() 函数返回参数是指针类型,所以可以用 & 取结构体的指针;B 处,如果填 *f(),则 p 是 S 类型;如果填 f(),则 p 是 *S 类型,不过都可以使用 p.m 取得结构体的成员。

欢迎在留言区补充!

看下今天的题目:
1.下面的代码有几处语法问题,各是什么?

package main
import (
    "fmt"
)
func main() {
    var x string = nil
    if x == nil {
        x = "default"
    }
    fmt.Println(x)
}

2.return 之后的 defer 语句会执行吗,下面这段代码输出什么?

var a bool = true
func main() {
    defer func(){
        fmt.Println("1")
    }()
    if a == true {
        fmt.Println("2")
        return
    }
    defer func(){
        fmt.Println("3")
    }()
}

答案以及解析会在下一篇文章中给出,鼓励大家在留言区留下答案,抱团学习,日拱一卒,每天进步一点!

ps:看完文章如果有收获,顺手花 1s 时间帮点下文末右下方的「在看」,感激!

所有学习上的成功,都只依靠两件事 -- 策略和坚持,而坚持本身就是最重要的策略!

推荐阅读:

非懂不可的Slice(二)

Go 语言接口详解(一)

Go 语言接口详解(二)

如果我的文章对你有所帮助,点赞、转发都是一种支持!

691b73431833669c7b4daa5e4e3e5476.gif

54bb2538695a23b07358ecd4004d8242.png

给个[在看],是对四哥最大的支持
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值