1. make与new的区别Make 用于map、slice 和channel几种类型的内存分配。并且返回一
转载 2022-10-31 09:25:17
10000+阅读
golang slice扩容原理新申请容量 cap,如果大于 2 倍旧容量 (oldcap),要扩容的容量(newcap)= 新申请容量 cap如果旧容量(oldcap)< 1024, 要扩容的容量(newcap)= 旧容量(oldcap)* 2如果旧容量(oldcap) >=1024,要扩容的容量(newcap)= 旧容量(oldcap)* 1.251.18版本以后新逻辑新申请容量 cap
原创 2023-03-15 15:46:10
149阅读
基础篇1、make和new的区别共同点:都是给变量分配内存的,且在堆上分配内存不同点:作用变量不同: make只能用来分配slice,map,channel的数据;new可以分配任意类型的数据返回类型不一样: new返回指向变量的指针,make返回变量本身new 分配的空间被清零。make 分配空间后,会进行初始化var v *int v = new(int) *v = 8 fmt.Println
原创 2023-05-09 17:35:14
136阅读
【初级】下面属于关键字的是()A. fu
原创 2023-06-13 14:49:59
161阅读
Golang面试题 所有题目,一行一行敲过亲自反复验证后.100%没有问题.里面加了一些自己的测试结果和理论,应该都是对的. 这一套题最棒的地方在于可以学习到很多书上没有的东西,有很多平时注意不到的地方这里都提到了, 不光是在准备面试,同时也有很多应用非常巧妙的地方可以在工作中借鉴.
转载 2021-07-30 15:37:00
841阅读
2评论
32. map的value赋值问题 type Student struct{Name string} m := make(map[string]Student) 这
原创 2022-06-04 01:14:48
10000+阅读
Gin框架的优势有哪些?高性能:Gin采用了基于Radix树的路由算法和高效的JSON编码器,可以大幅提升Web应用程序的性能。轻量级:Gin使用Go语言开发,体积小、速度快,适合构建轻量级、高并发的Web服务。易用性:Gin提供了简洁的API和灵活的中间件机制,使得代码编写和调试都非常方便。如何在Gin中实现请求参数校验?可以使用Gin的binding包来实现请求参数校验。该包提供了多种校验器,
原创 2023-05-23 10:46:50
836阅读
golang面试题整理 1、go的调度2、go struct能不能比较 因为是强类型语言,所以不同类型的结构不能作比较,但是同一类型的实例值是可以比较的,实例不可以比较,因为是指针类型 3、go defer(for defer),先进后出,后进先出 func b() { for i := 0; i
转载 2021-04-06 17:25:00
225阅读
2评论
1. 写出下面代码输出内容。package main import ( "fmt" ) func main() { defer_call() } func defer_call() { defer func() { fmt.Println("打印前") }() defer func() { fmt.Println("打印中") }() defer f
转载 2024-09-06 14:27:08
150阅读
数据定义1.函数返回值问题:在函数有多个返回值时,只要有⼀个返回值有名 称,那么其他返回值也⼀定要有名称2.结构体的⽐较问题 :结构体⽐较规则之⼀: 只有相同的类型的结构体才可以⽐较(1 结构体的属性类型, 2 属性的顺序)结构体⽐较规则之⼆: 即使两个结构体的属性类型和顺序相同,但是⾥⾯存在不可⽐较类型,依然是不可以直接==⽐较的。 ⽐如 map,slice 可以参考⽤reflect.DeepE
转载 2023-09-19 19:57:09
80阅读
基础1、golang 中 make 和 new 的区别?(基本必问)区别:在go语言中,make和new都是内存的分配(堆上),但是make只用于slice、map以及channel的初始化(非零值);而new用于类型的内存分配,并且内存置为零。make返回的是引用类型本身;而new返回的是指向类型的指针2、数组和切片的区别 (基本必问)区别:1、切片是指针类型,数组是值类型;2、数组的长度是固定
转载 2021-11-25 00:31:38
26阅读
最近在很多地方看到了golang面试题,看到了很多人对Golang面试题心存恐惧,也是为了复习基础,我把解题的过程总结下来。面试题1. 写出下面代码输出内容。package main import (     "fmt" ) func main() {     defer
原创 精选 2017-07-21 23:27:56
5268阅读
3点赞
3评论
Redis 单线程为什么还能这么快?完全基于内存,绝大部分请求是纯粹的内存操作。数据结构简单,对数据操作也简单,Redis中的数据结构是专门进行设计的。采用单线程,避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗 CPU,不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗。使用多路I/O复用模型,非阻塞IO。使用底层模型不同,它们之间底层
说一下channel底层实现原理Go 中的 channel 是一种用于多个 goroutine 之间通信和同步的原语。channel 在 Go 内部是通过信号量和锁实现的。当一个 goroutine 向 channel 中写入数据时,它首先会获取 channel 的写锁,以确保只有它可以向 channel 中写入数据。如果 channel 已经满了,那么这个 goroutine 将被阻塞,直到另一
原创 2023-05-14 09:07:45
632阅读
1. golang协程为什么比线程轻量?  1. go协程调用跟切换比线程效率高。   线程是内核对外提供的服务,应用程序可以通过系统调用让内核启动线程,由内核来负责线程调度和切换。线程在等待IO操作时线程变为unrunnable状态会触发上下文切换。现代操作系统一般都采用抢占式调度,上下文切换一般发生在时钟中断和系统调用返回前,调度器计算当前线程的时间片,如果需要切换就从运行队列中选出一个目标线
转载 2023-08-03 14:02:12
73阅读
前两天有个朋友去面试,把他给问自闭了。。。拿到他的面试题后,花了一些时间,整理了以下golang面试题,都是比较基础的问题,留给大家
原创 2022-01-09 15:45:21
414阅读
1点赞
1评论
12.是否可以编译通过?如果通过,输出什么?func main() { i := GetValue() switch i.(type) { case int: println("int") case string: println("string") case interface{}:
原创 2017-08-18 20:38:38
6656阅读
41.执行下面的代码发生什么?packagemaintypeParammap[string]interface{}typeShowstruct{*Param}funcmain(){s:=new(Show)s.Param["RMB"]=10000}考点:map初始化map需要初始化后才能使用。编译错误:invalidoperation:s.Param["RMB"](type*Pa
原创 2018-09-17 11:42:59
2836阅读
31.算法在utf8字符串判断是否包含指定字符串,并返回下标。"北京天安门最美丽","天安门"结果:2解答:import("fmt""strings")funcmain(){fmt.Println(Utf8Index("北京天安门最美丽","天安门"))fmt.Println(strings.Index("北京天安门最美丽","男"))fmt.Println
原创 2018-03-30 13:57:28
10000+阅读
文章目录1. 数据结构1.1 切片1.1.1 说一下切片的数据结构1.1.2 切片扩容策略1.1.3 怎么拷贝切片1.2 map1.2.1 什么是map1.2.2 说一下map的底层数据结构1.2.3 说一下map的扩容机制1.2.4 什么是Hash冲突,如何解决1.2.4 map删除1.3 string1.3.1 说一下string的数据结构1.3.2 说一下字符串的拼接1.4 struct1.
  • 1
  • 2
  • 3
  • 4
  • 5