
golang
文章平均质量分 52
「已注销」
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
go语言面试题
参考答案及解析:输出空字符。这是一个大多数人遇到的坑,TrimRight() 会将第二个参数字符串里面所有的字符拿出来处理,只要与其中任何一个字符相等,便会将其删除。参考答案及解析:输出 []。copy(dst, src) 函数返回 len(dst)、len(src) 之间的最小值。如果想要将 src 完全拷贝至 dst,必须给 dst 分配足够的内存空间。参考答案及解析:B。由 panic 引发异常以后,程序停止执行,然后调用延迟函数(defer),就像程序正常退出一样。原创 2023-05-24 23:13:42 · 1195 阅读 · 0 评论 -
Go面试题
参考答案及解析:0 1 1 2。知识点:iota 的使用。这道题易错点在 bzero、bone 的值,在一个常量声明代码块中,如果 iota 没出现在第一行,则常量的初始值就是非 0 值。参考答案及解析:4。当 i 的值为 0、128 是会发生相等情况,注意 byte 是 uint8 的别名。参考答案及解析:A。一个文件夹下只能有一个包,可以多个.go文件,但这些文件必须属于同一个包。结构体类型 data 没有实现接口 printer。参考答案及解析:编译报错。原创 2023-05-24 23:09:47 · 518 阅读 · 0 评论 -
Go语言面试题--必会语法(2)
参考答案及解析:输出空字符。这是一个大多数人遇到的坑,TrimRight() 会将第二个参数字符串里面所有的字符拿出来处理,只要与其中任何一个字符相等,便会将其删除。参考答案及解析:输出 []。copy(dst, src) 函数返回 len(dst)、len(src) 之间的最小值。如果想要将 src 完全拷贝至 dst,必须给 dst 分配足够的内存空间。参考答案及解析:B。由 panic 引发异常以后,程序停止执行,然后调用延迟函数(defer),就像程序正常退出一样。或者直接使用 append()原创 2023-05-22 09:18:56 · 461 阅读 · 0 评论 -
Go语言面试题--必会语法(1)
参考答案及解析:0 1 1 2。知识点:iota 的使用。这道题易错点在 bzero、bone 的值,在一个常量声明代码块中,如果 iota 没出现在第一行,则常量的初始值就是非 0 值。参考答案及解析:4。当 i 的值为 0、128 是会发生相等情况,注意 byte 是 uint8 的别名。参考答案及解析:A。一个文件夹下只能有一个包,可以多个.go文件,但这些文件必须属于同一个包。原创 2023-05-22 08:24:26 · 403 阅读 · 0 评论 -
go语言面试题
参考答案及解析:0 1 1 2。知识点:iota 的使用。这道题易错点在 bzero、bone 的值,在一个常量声明代码块中,如果 iota 没出现在第一行,则常量的初始值就是非 0 值。参考答案及解析:4。当 i 的值为 0、128 是会发生相等情况,注意 byte 是 uint8 的别名。参考答案及解析:A。一个文件夹下只能有一个包,可以多个.go文件,但这些文件必须属于同一个包。结构体类型 data 没有实现接口 printer。参考答案及解析:编译报错。原创 2023-05-18 23:48:47 · 412 阅读 · 0 评论 -
go面试题
参考答案及解析:AD。全局变量要定义在函数之外,而在函数之外定义的变量只能用 var 定义。短变量声明 := 只能用于函数之内。原创 2023-05-18 23:45:45 · 388 阅读 · 0 评论 -
goland语法面试题
参考答案及解析:无限递归循环,栈溢出。知识点:类型的 String() 方法。如果类型定义了 String() 方法,使用 Printf()、Print() 、 Println() 、 Sprintf() 等格式化输出时会自动使用 String() 方法。C. 只有在 case 中明确添加 fallthrought 关键字,才会继续执行紧跟的下一个 case;参考答案及解析:可以编译通过,输出:true。A. 单个 case 中,可以出现多个结果选项;参考答案及解析:AC。参考答案及解析:B。原创 2023-05-17 22:09:44 · 524 阅读 · 0 评论 -
goland语法面试题
知识点:类型断言,结构体嵌套。结构体 S2 嵌套了结构体 S1,S2 自己没有实现 g() ,调用的是 S1 的 g()。参考答案及解析:协程里面,使用 wg.Add(1) 但是没有 wg.Done(),导致 panic()。参考答案即解析:ABD。channel 返回 channel 的容量;slice 返回 slice 的最大容量;参考答案及解析:A。arry 返回数组的元素个数;原创 2023-05-17 22:06:56 · 531 阅读 · 0 评论 -
Go语言面试题--进阶提升(10)
参考答案及解析:10x。这道题一眼看上去会输出 109876543210,其实这是错误的答案,这里不是递归。假设 main() 函数里为 f2(),外面的为 f1(),当声明 f2() 时,调用的是已经完成声明的 f1()。for 循环局部变量 i,匿名函数每一次使用的都是同一个变量。(说明:i 的地址,输出可能与上面的不一样)参考答案及解析:2、3正确。知识点:简短变量声明。参考答案及解析:for {} 独占 CPU 资源导致其他 Goroutine 饿死。短变量声明语句中至少要声明一个新的变量;原创 2023-05-16 21:48:47 · 410 阅读 · 0 评论 -
Go语言面试题
2.defer 函数的参数(包括接收者)是在 defer 语句出现的位置做计算的,而不是在函数执行的时候计算的,所以 s.Add(1) 会先于 s.Add(3) 执行。作用类似在 C、C#、Java 语言中中符号 ~,对于有符号的整数来说,是按照补码进行取反操作的(快速计算方法:对数 a 取反,结果为 -(a+1) ),对于无符号整数来说就是按位取反。这道题容易忽视的点是,String() 是指针方法,而不是值方法,所以使用 Println() 输出时不会调用到 String() 方法。原创 2023-05-16 21:45:29 · 483 阅读 · 0 评论 -
Go必会面试题
2.defer 函数的参数(包括接收者)是在 defer 语句出现的位置做计算的,而不是在函数执行的时候计算的,所以 s.Add(1) 会先于 s.Add(3) 执行。作用类似在 C、C#、Java 语言中中符号 ~,对于有符号的整数来说,是按照补码进行取反操作的(快速计算方法:对数 a 取反,结果为 -(a+1) ),对于无符号整数来说就是按位取反。这道题容易忽视的点是,String() 是指针方法,而不是值方法,所以使用 Println() 输出时不会调用到 String() 方法。原创 2023-05-15 18:03:19 · 628 阅读 · 0 评论 -
Go语言必会面试题
参考答案及解析:BD。知识点:单引号、双引号和字符串连接。在 Go 语言中,双引号用来表示字符串 string,其实质是一个 byte 类型的数组,单引号表示 rune 类型。参考答案及解析:22222。知识点:defer()、for-range。for-range 虽然使用的是 :=,但是 v 不会重新声明,可以打印 v 的地址验证下。参考答案及解析:goto 不能跳转到其他函数或者内层代码。参考答案及解析:100 110。知识点:闭包引用相同变量。参考答案及解析:ACD。参考答案及解析:43。原创 2023-05-15 18:00:51 · 691 阅读 · 0 评论 -
Go语言面试题--进阶提升(7)
参考答案及解析:BD。知识点:单引号、双引号和字符串连接。在 Go 语言中,双引号用来表示字符串 string,其实质是一个 byte 类型的数组,单引号表示 rune 类型。参考答案及解析:100 110。知识点:闭包引用相同变量。参考答案及解析:ACD。参考答案及解析:43。原创 2023-05-11 22:40:28 · 239 阅读 · 0 评论 -
Go语言面试题--进阶提升(6)
参考答案及解析:9 [{0} {9}]。知识点:for-range 切片。for-range 切片时使用的是切片的副本,但不会复制底层数组,换句话说,此副本切片与原数组共享底层数组。参考答案及解析:9 [{0} {9}]。for-range 切片时使用的是切片的副本,但不会复制底层数组,换句话说,此副本切片与原数组共享底层数组。for-range 虽然使用的是 :=,但是 v 不会重新声明,可以打印 v 的地址验证下。参考答案及解析:9 [{3} {9}]。参考答案及解析:9 [{3} {9}]。原创 2023-05-11 22:36:30 · 176 阅读 · 0 评论 -
Go语言面试题--进阶提升(5)
参考答案及解析:9 [{0} {9}]。知识点:for-range 数组指针。for-range 循环中的循环变量 t 是原数组元素的副本。如果数组元素是结构体值,则副本的字段和原数组字段是两个不同的值。参考答案及解析:9 [{0} {9}]。知识点:for-range 切片。for-range 切片时使用的是切片的副本,但不会复制底层数组,换句话说,此副本切片与原数组共享底层数组。参考答案及解析:0 [{0} {9}]。知识点:for-range 循环数组。参考答案及解析:9 [{3} {9}]。原创 2023-05-10 22:12:06 · 93 阅读 · 0 评论 -
Go语言面试题--进阶提升(3)
recover() 必须在 defer() 函数中调用才有效,所以第 9 行代码捕获是无效的。在调用 defer() 时,便会计算函数的参数并压入栈中,所以执行第 6 行代码时,此时便会捕获 panic(2);此后的 panic(1),会被上一层的 recover() 捕获。recover() 必须在 defer() 函数中直接调用才有效。上面其他几种情况调用都是无效的:直接调用 recover()、在 defer() 中直接调用 recover() 和 defer() 调用时多层嵌套。原创 2023-05-06 23:47:53 · 521 阅读 · 0 评论 -
Go语言面试题--进阶提升(1)
参考答案及解析:第 19 行,因为 s.bar 将被展开为 (*s.T).bar,而 s.T 是个空指针,解引用会 panic。参考答案及解析:锁失效。将 Mutex 作为匿名字段时,相关的方法必须使用指针接收者,否则会导致锁机制失效。参考答案及解析:13 13 13。当目标方法的接收者是指针类型时,那么被复制的就是指针。参考答案及解析:第 12 行。因为左侧的 s[0] 中的 s 为 nil。原创 2023-04-25 16:53:13 · 460 阅读 · 0 评论 -
Go语言面试题--进阶语法(33)
第一次循环,写操作已经准备好,执行 o(3),输出 3;第二次,读操作准备好,执行 o(2),输出 2 并将 c 赋值为 nil;第三次,由于 c 为 nil,走的是 default 分支,输出 1。如下规则:递增运算符 ++ 和递减运算符 – 的优先级低于解引用运算符 * 和取址运算符 &,解引用运算符和取址运算符的优先级低于选择器 . 中的属性选择操作符。参考答案:第 6 行,截取符号 [i:j],如果 j 省略,默认是原切片或者数组的长度,x 的长度是 2,小于起始下标 6 ,所以 panic。原创 2023-04-25 16:53:01 · 392 阅读 · 0 评论 -
Go语言面试题--进阶语法(32)
参考答案及解析:代码没问题,输出 3 4。假设基础切片是 baseSlice,使用操作符 [low,high],有如下规则:0 <= low <= high <= cap(baseSlice),只要上述满足这个关系,下标 low 和 high 都可以大于 len(baseSlice)。当指针值赋值给变量或者作为函数参数传递时,会立即计算并复制该方法执行所需的接收者对象,与其绑定,以便在稍后执行时,能隐式第传入接收者参数。C. 不能在单向通道上做逆向操作(例如:只发送通道用于接收);参考答案及解析:C。原创 2023-04-22 20:51:39 · 656 阅读 · 0 评论 -
Go语言面试题--进阶语法(31)
参考答案及解析:10 11 12。知识点:方法表达式。通过类型引用的方法表达式会被还原成普通函数样式,接收者是第一个参数,调用时显示传参。类型可以是 T 或 *T,只要目标方法存在于该类型的方法集中就可以。B. 从已关闭的缓冲通道接收数据,返回已缓冲数据或者零值;2.不可寻址的结构体不能调用带结构体指针接收者的方法;A. 向已关闭的通道发送数据会引发 panic;C. 无论接收还是接收,nil 通道都会阻塞;1.直接返回的 T{} 不可寻址;不能使用多级指针调用方法。参考答案及解析:ABC。原创 2023-04-22 20:40:41 · 579 阅读 · 0 评论 -
Go语言面试题--进阶语法(30)
参考答案及解析:X{} 是不可寻址的,不能直接调用方法。知识点:在方法中,指针类型的接收者必须是合法指针(包括 nil),或能获取实例地址。参考答案及解析:检查 map 是否含有某一元素,直接判断元素的值并不是一种合适的方式。最可靠的操作是使用访问 map 时返回的第二个值。map[key]struct 中 struct 是不可寻址的,所以无法直接赋值。参考答案及解析:B。函数只能与 nil 比较。参考答案及解析:编译错误。原创 2023-04-20 09:10:10 · 444 阅读 · 0 评论 -
Go语言面试题--基础语法(29)
Go语言面试题--基础语法(29)原创 2023-04-19 09:07:07 · 206 阅读 · 0 评论 -
Go面试必会基础题
Go面试必会基础题原创 2023-04-18 20:56:41 · 393 阅读 · 0 评论 -
Go面试必会基础题
参考答案及解析:问题:使用 cap() 获取 map 的容量。1.使用 make 创建 map 变量时可以指定第二个参数,不过会被忽略。2.cap() 函数适用于数组、数组指针、slice 和 channel,不适用于。参考答案及解析:nil 用于表示 interface、函数、maps、slices 和 channels 的“零值”。如果不指定变量的类型,编译器猜不出变量的具体类型,导致编译错误。,可以使用 len() 返回 map 的元素个数。参考答案及解析:编译失败。下面代码能编译通过吗?原创 2023-04-18 20:40:56 · 466 阅读 · 0 评论 -
Go面试必会基础题
a 在 for range 过程中增加了两个元素 ,len 由 5 增加到 7,但 for range 时会使用 a 的副本 a’ 参与循环,副本的 len 依旧是 5,因此 for range 只会循环 5 次,也就只获取 a 对应的底层数组的前 5 个元素。但也有例外,函数中声明的变量必须要使用,但可以有未使用的全局变量。上面这段代码是在该类型的 String() 方法内使用格式化输出,导致递归调用,最后抛错。如果你真的需要引入包,可以使用下划线操作符,_,来作为这个包的名字,从而避免失败。原创 2023-04-17 23:14:04 · 437 阅读 · 0 评论 -
Go面试必会基础题
Go面试必会基础题原创 2023-04-17 22:14:22 · 162 阅读 · 0 评论 -
go语言怎么使用cgo
在Go中使用cgo可以让你调用C语言的函数。cgo是一个转换器,将Go代码转换成C代码,并将其编译成对象文件,然后将其链接到Go程序中。的C语言函数,并在Go中进行了调用。注意,我们使用了注释来告诉Go编译器这是一个C语言的函数。以上是一个简单的例子。更复杂的C语言库可能需要更多的设置和配置才能正确地与Go代码一起工作。上面的代码中,我们定义了一个名为。原创 2023-03-29 23:46:04 · 428 阅读 · 0 评论 -
go语言实现支付宝支付
在你的 Go 代码中导入支付宝 SDK 包,并按照文档的要求配置好应用 ID、支付密钥等参数。请注意,在实际开发中,需要根据业务需求选择不同的接口,并正确处理返回结果以及异常情况。创建一个支付宝应用,在开发者平台注册并获取应用 ID 和支付密钥。调用相应的接口来实现支付宝支付功能,例如创建订单、查询订单状态等。下载并安装支付宝 SDK。可以在官方开发者平台下载。原创 2023-03-29 23:35:44 · 2702 阅读 · 0 评论 -
go语言WaitGroup 实现原理
提供了一种便捷的机制来等待一组goroutine的完成。它的实现简单而高效,可以应用于各种并发场景。方法会进入一个for循环,不断地检查计数器的值是否为0,如果不是则继续阻塞,如果是则立即返回。是一种并发原语,用于等待一组goroutine的完成。的实现比较简单,它本质上是一个计数器,其初始值为0。方法时,计数器减少1;当计数器的值变为0时,阻塞在。方法内部,使用了一个内置的信号量来实现线程同步。方法上的goroutine将被唤醒。方法时,计数器增加指定数量的值;原创 2023-03-22 00:11:40 · 444 阅读 · 0 评论 -
go语言Gin框架常见面试题(2)
在Gin框架中,我们可以使用gin.Engine类型的router对象来定义路由处理器。例如,如果我们要处理GET请求并返回"Hello,world!这里我们使用了r.GET()方法来定义路由,它接受两个参数:路由路径和路由处理器函数。当收到GET请求时,Gin框架将调用该处理器函数并向客户端返回响应。原创 2023-03-14 22:24:19 · 845 阅读 · 1 评论 -
go语言Gin框架常见面试题(1)
go语言中redis的Pipelined方法原创 2023-03-14 21:16:48 · 3419 阅读 · 0 评论 -
Go面试必会基础题(6)
Go面试必会基础题(6)原创 2023-03-09 08:00:00 · 247 阅读 · 0 评论 -
Go面试必会基础题(5)
Go面试必会基础题(5)原创 2023-03-09 07:00:00 · 325 阅读 · 0 评论 -
Go面试必会基础题(3)
Go面试必会基础题(3)原创 2023-03-09 05:00:00 · 230 阅读 · 0 评论 -
Go面试必会基础题(4)
Go面试必会基础题(4)原创 2023-03-09 06:30:00 · 249 阅读 · 0 评论 -
Go语言time.After内存泄漏分析
因为使用time.After被组长臭骂一顿???原创 2023-03-03 22:34:35 · 696 阅读 · 1 评论