Go语言基础语法面试题
Go有异常类型吗
Go没有异常类型,只有错误类型(Error),通常使用返回值来表示异常状态
1 | f, err := os.Open("test.txt") |
什么是协程Goroutine
Goroutine 是与其他函数或方法同时运行的函数或方法。 Goroutines 可以被认为是轻量级的线程。 与线程相比,创建 Goroutine 的开销很小。 Go应用程序同时运行数千个 Goroutine 是非常常见的做法。
如何高效地拼接字符串
在Go中,字符串是只读的,也就意味着每次修改操作都会创建一个新的字符串。如果需要拼接多次,应该使用string.Builder,最小化内存拷贝次数。
1 | var str strings.Builder |
什么是rune类型
ASCII 码只需要 7 bit 就可以完整地表示,但只能表示英文字母在内的128个字符,为了表示世界上大部分的文字系统,发明了 Unicode, 它是ASCII的超集,包含世界上书写系统中存在的所有字符,并为每个代码分配一个标准编号(称为Unicode CodePoint),在 Go 语言中称之为 rune,是 int32 类型的别名。
如何判断map中是否包含某个key
1 | if val, ok := dict["foo"]; ok { |
dict[“foo”] 有 2 个返回值,val 和 ok,如果 ok 等于 true,则说明 dict 包含 key “foo”,val 将被赋予 “foo” 对应的值。
defer的执行顺序
- 多个defer语句,遵从后进先出(Last in First Out, LIFO)的原则,最后声明的defer语句,最先得到执行。
- defer在return语句执行后执行,但在函数退出之前,defer可以修改返回值。
1 | func test() int { |
如何交换两个变量的值
1 | a, b := "A", "B" |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Napleon!
评论