Golang面试题——基础知识

1.相比较于其他语言,Go有什么优势或者特点?

·Go允许跨平台编译,编译出来的是二进制的可执行文件,直接部署在对应系统上即可运行。

·Go在语言层次上天生支持高并发,通过goroutine和channel(基于CSP并发模型)的通信实现。Go在runtime运行时里有自己的调度机制:GMP,降低了内核态和用户态的切换成本。

·Go的语法简单,代码风格比较统一

2.go是面向对象的吗

Go不是面向对象语言,但也可以进行面向对象风格的编程;

3、go struct能不能比较

因为是强类型语言,所以不同类型的struct结构不能作比较;同一类型的实例值是可以比较的也是不可比较的;

解释:当struct中的实例是slice、func、map时不可比较,其余可以比较、

4.golang中make和new的区别?

·make只能用来分配及初始化类型为slice、map、channel的数据。new可以分配任意类型的数据;

·make返回数据类型本身,即Type;new分配返回的是指针,即类型*Type。

·make分配空间后,会进行初始化;new分配的空间被清零。

5.G0语言中如何访问私有成员?

在Go语言中,以小写字母开头的标识符是私有成员,私有成员(字段、方法、函数等)遵循语言的可见性规侧,仅在定义它的包内可见,包外无法访问这些私有成员。如果想要访问私有成员,主要包括以下三种方式:·在同一个包内,可以直接访问小写字母开头的私有成员。·在其他包中,无法直接访问私有成员,但可以通过公开的接口来间接访问私有成员。·使用反射来绕过G0语言的封装机制访问和修改私有字段。(不建议使用)

6.数组和切片的区别

slice:结构包含三个字段,array类型为unsafe.Pointer,还有两个int类型的字段len和cap。

array:是一个指针变量,指向一块连续的内存空间,即底层数组结构、len:当前切片中数据长度、cap:切片的容量。

数组是值类型,长度固定;切片是引用类型,长度不固定,可以动态扩容;

追问:切片怎么扩容?注意区分版本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值