今天小编给大家分享一下golang面试题有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
new 初始化T类型的零值,返回指针 make 初始T 类型, 返回T类型
s := struct {}{} d := [0]int{} if unsafe.Pointer(&s) == unsafe.Pointer(&d) { fmt.Println("same adress") } else { fmt.Println("not same adress") }
result:same adress
当变量(或者对象)在方法中分配后,其指针被返回或者被全局引用(这样就会被其他过程或者线程所引用),这种现象称作指针(或者引用)的逃逸(Escape)。
func assginParameter() (ret int){ i := 0 ret = 0 for i < 3 { go func() { time.Sleep(1) fmt.Println("get value %v", ret) }() i++ } return 1}func TestInterface2(t *testing.T) { assginParameter() time.Sleep(3)}
隐式赋值返回值
0 0 0
0 0 1
0 1 1
1 1 1
var a = b + cvar b = f()var c = 1func f() int { return 100}func TestInterface2(t *testing.T) { fmt.Println(a , b , c )}
101 100 1
包级别的变量按照声明顺序初始化, 在依赖解析完毕的情况下 ,根据依赖的顺序进行。
包的初始按照导入的顺序进行。
作用域:编译属性
生命周期 :运行期属性。
var a = 0 if true { a,b := 1, 5 fmt.Print(a, b) } fmt.Print(a) if true { b := 0 a,b = 2, 5 fmt.Println(a, b) } fmt.Println(a)
0 1 5 0 2 5 2
考察 := 对外围重名赋值的覆盖问题。
第一个字节? 第一个字符?
答案:第一个字符( 一个字符根据不同编码可能对应多个字节)
s := "12345" s[0] = ‘0’ // 编译错误!!!
slice 不可以做slice 的key, slice 没有 “ == ” 操作
A 组合 B 继承
答:A
go 的函数调用栈可变长,最多可达 1GB 左右
以上就是“golang面试题有哪些”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://my.oschina.net/u/4586289/blog/4404224