1.Printf(),Sprintf(),FprintF()都是格式化输出,有什么不同?

虽然这三个函数,都是格式化输出,但是输出的目标不一样

Printf是标准输出,一般是屏幕,也可以重定向。

Sprintf()是把格式化字符串输出到指定的字符串中。

Fprintf()是吧格式化字符串输出到文件中。

2、Golang 使用什么数据类型?

Golang 使用以下类型:

Method

Boolean

Numeric

String

Array

Slice

Struct

Pointer

Function

nterface

Map

Channel

3、Go 程序中的包是什么?

包 (pkg) 是 Go 工作区中包含 Go 源文件或其他包的目录。源文件中的每个函数、变量和类型都存储在链接包中。每个 Go 源文件都属于一个包,该包在文件顶部使用以下命令声明:

package

您可以使用以下方法导入和导出包以重用导出的函数或类型:

import

Golang 的标准包是 fmt,其中包含格式化和打印功能,如 Println().

4、Go 支持什么形式的类型转换?将整数转换为浮点数。

Go 支持显式类型转换以满足其严格的类型要求。

i:=55//intj:=67.8//float64sum:=i+int(j)//jisconvertedtoint

5、什么是 Goroutine?你如何停止它?

一个 Goroutine 是一个函数或方法执行同时旁边其他任何够程采用了特殊的Goroutine 线程。Goroutine 线程比标准线程更轻量级,大多数 Golang 程序同时使用数千个 g、Goroutine。

要创建 Goroutine,请 go 在函数声明之前添加关键字。

gof(x,y,z)

您可以通过向 Goroutine 发送一个信号通道来停止它。Goroutines 只能在被告知检查时响应信号,因此您需要在逻辑位置(例如 for 循环顶部)包含检查。

packagemainfuncmain(){quit:=make(chanbool)gofunc(){for{select{case<-quit:returndefault://...}}}()//...quit<-true}

6、 如何在运行时检查变量类型?

类型开关是在运行时检查变量类型的最佳方式。类型开关按类型而不是值来评估变量。每个 Switch 至少包含一个 case,用作条件语句,和一个defaultcase,如果没有一个 case 为真,则执行。

7、Go 两个接口之间可以存在什么关系?

如果两个接口有相同的方法列表,那么他们就是等价的,可以相互赋值。如果接口 A 的方法列表是接口 B 的方法列表的自己,那么接口 B 可以赋值给接口A。接口查询是否成功,要在运行期才能够确定。

8、Go 当中同步锁有什么特点?作用是什么

当一个 Goroutine(协程)获得了 Mutex 后,其他 Gorouline(协程)就只能乖乖的等待,除非该 gorouline 释放了该 MutexRWMutex 在 读锁 占用的情况下,会阻止写,但不阻止读 RWMutex 在 写锁 占用情况下,会阻止任何其他goroutine(无论读和写)进来,整个锁相当于由该 goroutine 独占同步锁的作用是保证资源在使用时的独有性,不会因为并发而导致数据错乱,保证系统的稳定性。

9、Go 语言当中 Channel(通道)有什么特点,需要注意什么?

如果给一个 nil 的 channel 发送数据,会造成永远阻塞如果从一个 nil 的channel 中接收数据,也会造成永久爱阻塞给一个已经关闭的 channel 发送数据, 会引起 pannic 从一个已经关闭的 channel 接收数据, 如果缓冲区中为空,则返回一个零值。

10、Go 语言当中 Channel 缓冲有什么特点?

无缓冲的 channel 是同步的,而有缓冲的 channel 是非同步的。

11、Go 语言中 cap 函数可以作用于那些内容?

cap 函数在讲引用的问题中已经提到,可以作用于的类型有:

array(数组)

slice(切片)

channel(通道)

12、go convey 是什么?一般用来做什么?

go convey 是一个支持 golang 的单元测试框架

go convey 能够自动监控文件修改并启动测试,并可以将测试结果实时输出到Web界面

go convey 提供了丰富的断言简化测试用例的编写

13、Go 语言当中 new 和 make 有什么区别吗?

new 的作用是初始化一个纸箱类型的指针 new 函数是内建函数,函数定义:

funcnew(Type)*Type

使用new函数来分配空间

传递给new函数的是一个类型,而不是一个值

返回值是指向这个新非配的地址的指针

14、Go 语言中 make 的作用是什么?

make 的作用是为 slice, map or chan 的初始化 然后返回引用 make 函数是内建函数,函数定义:

funcmake(Type,sizeIntegerType)Type

make(T, args)函数的目的和 new(T)不同 仅仅用于创建 slice, map,channel 而且返回类西行是实例

15、与其他语言相比,使用 Go 有什么好处?

与其他作为学术实验开始的语言不同,Go 代码的设计是务实的。每个功能 和语法决策都旨在让程序员的生活更轻松。

Golang 针对并发进行了优化,并且在规模上运行良好。

由于单一的标准代码格式,Golang 通常被认为比其他语言更具可读性。

自动垃圾收集明显比 Java 或 Python 更有效,因为它与程序同时执行。

据说喜欢分享的,后来都成了大神!

往期推荐

Golang数据库编程之GORM库入门

golang实现RPC的几种方式

Gin框架源码解析【建议收藏】

Golang并发编程——Goroutine底层实现详解

腾讯PHP/GO工程师面试经历

go面试题:第一天

推荐内容