![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
GO
文章平均质量分 76
Vivien_o.O
除非你不想赢,否则没人能让你输
展开
-
【Go语言】切片的扩容
不论是在Java中,或者其他语言中,集合的一个底层原理都是面试考察的一个重点,这篇文章就简单的讲一下切片的扩容机制,如果需要深入研究,可以自行看源码。否则每次增加四分之一容量在加上四分之三的阈值容量知道大于所需容量(newcap += (newcap + 3*threshold) / 4)在不同的版本中,扩容的机制也是不同的,如果你能够同时大致的说出这两种的不同,很有可能获得面试官的一个好感。如果所需的容量大于两倍就扩容至所需的容量。如果所需的容量大于两倍就扩容至所需的容量。否则如果小于256就扩容两倍。原创 2022-09-08 14:21:53 · 412 阅读 · 0 评论 -
【golang学习笔记】net/http包下handler和handlerFunc区别
方法签名。原创 2022-07-24 18:25:44 · 442 阅读 · 0 评论 -
【golang学习笔记】Go语言中参数的传递是值传递还是引用传递
Go中所有的参数传递都是值传递,是对数据进行一个拷贝。具体分为引用类型和非引用类型非引用类型(值类型)int,string,float,bool,数组和struct;特点值类型变量声明后,直接存的就是对应的数据。引用类型指针,slice,map,channel,接口,函数等。特点变量存放的是一个内存地址值,这个地址值指向的空间存的才是最终的值。内存通常在堆中分配,当没有任务变量引用这个地址时,该地址对应的数据空间就成为一个垃圾,通过GC回收。...原创 2022-07-22 12:13:34 · 1136 阅读 · 0 评论 -
【golang学习笔记】flag包的简单使用,命令行解析
flag包支持的命令行参数类型有bool、int、int64、uint、uint64、floatfloat64、string、duration。StringVar用指定的名称、默认值、使用信息注册一个string类型flag,并将flag的值保存到p指向的变量。String用指定的名称、默认值、使用信息注册一个string类型flag。返回一个保存了该flag的值的指针。在执行时使用--name=value进行传递。flag包实现了命令行参数的解析。本文只是简单入门,详细请看。一个-和两个-是一样的。...原创 2022-07-22 11:05:13 · 332 阅读 · 0 评论 -
【golang学习笔记】包(package)的使用
可以为包设置别名其中F就是包fmt的别名,使用时可以用别名替代如果我们想同时导入两个有着名字相同的包,例如math/rand包和crypto/rand包,那么导入声明必须至少为一个同名包指定一个新的包名以避免冲突。这叫做导入包的重命名。import("crypto/rand"mrand"math/rand"//将名称替换为mrand避免冲突)导入包的重命名只影响当前的源文件。其它的源文件如果导入了相同的包,可以用导入包原本默认的名字或重命名为另一个完全不同的名字。...原创 2022-07-21 15:32:51 · 2013 阅读 · 0 评论 -
【golang学习笔记】并发基础
Go语言从语言层面就支持并发。同时实现了自动垃圾回收机制goroutine是一种非常轻量级的实现,可在单个进程里执行成千上万的并发任务,它是Go语言并发设计的核心。说到底goroutine其实就是线程,但是它比线程更小,十几个goroutine可能体现在底层就是五六个线程,而且Go语言内部也实现了goroutine之间的内存共享。...原创 2022-07-20 20:47:06 · 1098 阅读 · 2 评论 -
【golang学习笔记】接口(interface)
Go语言中使用组合来实现对象特性的描述,对象的内部使用结构体内嵌组合对象应该具有的特性,对外通过接口暴露能使用的特性。Go 语言的接口设计是非侵入式的,接口编写者无须知道接口被哪些类型实现。而接口实现者只需知道实现的是什么样子的接口,但无须指明实现哪一个接口。编译器知道最终编译时使用哪个类型实现哪个接口,或者接口应该由谁来实现非侵入式设计是Go语言设计师经过多年的大项目经验 总结出来的设计之道。只有让接口和实现者真正解耦,编译速度才能真正提高,项目之间的耦合度也会降低。每个接口类型由数个方法组成,格式如下:原创 2022-07-13 15:48:22 · 1074 阅读 · 0 评论 -
【Golang】函数(一等公民)的使用
Go语言支持普通函数、匿名函数和闭包,从设计上对函数进行了优化和改进,让函数使用起来更加的方便。Go语言的函数属于“一等公民”(first-class),也就是说:函数构成了代码执行的逻辑结构,函数的基本组成为:Go语言拥有三种类型的函数:函数声明包括函数名、形式参数列表、返回值列表(可以省略)以及函数体例如:形式参数列表描述了函数的参数名以及类型,是局部变量返回值列表描述了函数返回值的变量名以及类型如果函数返回一个无名变量或者没有返回值,返回值列表的括号是可以省略的(即如果返回值声明了变量名,则原创 2022-07-12 18:20:50 · 2457 阅读 · 0 评论 -
【Golang】切片(slice)
切片(slice)是对数组的一个连续片段的引用,所以切片是一个引用类型,这个片段可以是整个数组,也可以是由起始和终止索引标识的一些项的子集,需要注意的是,终止索引标识的项不包括在切片内。Go语言中切片的内部结构包含地址、大小和容量,切片一般用于快速地操作一块数据集合,如果将数据集合比作切糕的话,切片就是你要的“那一块”,切的过程包含从哪里开始(切片的起始位置)及切多大(切片的大小),容量可以理解为装切片的口袋大小,如下图所示:切片默认指向一段连续内存区域,可以是数组,也可以是切片本身。从连续内存区域生成切片原创 2022-07-12 14:18:46 · 4810 阅读 · 0 评论 -
【Golang】指针
每个变量都有一个地址,使用“&”操作符放在变量前面对变量进行取地址操作。输出结果:看以下代码结果:其中cat表示被取地址的变量,被取的地址的cat被ptr进行接收,ptr的类型为 (因为cat的类型为int)称为T的指针类型, 代表指针可以使用* 操作代表指针取值结果:由此可以看出:取地址符 和取值操作符 是一对互操作符, 取出地址, 根据地址取出地址指向的值。变量、指针地址、指针变量、取地址、取值的相互关系和特性如下:结果: 操作符作为右值时,意义是取指针的值,作为左值时,也就是放在赋原创 2022-07-10 15:18:13 · 992 阅读 · 4 评论 -
Go语言的基本语法和使用---数据类型
整形分为以下两大类其中uint8就是byte类型,int16对应c中的short型,int64对应c语言中的long型。自动匹配平台的int和uintGo语言有自动匹配特定平台整形长度的类型-int和uint。在使用int和uint时,不能假定它是32位和64位的整形,而是考虑int和uint可能在不同平台上的差异。那些情况下使用int和uint逻辑对整型范围没有特殊要求时使用。在二进制传输,读写文件的结构描述时,为了保持文件的结构不会收到不同编译目标平台字节长度的影响,不要使用int和uint。Go语原创 2022-07-08 11:42:04 · 705 阅读 · 0 评论 -
Go语言的基本语法---变量
Go语言是静态类型语言,变量拥有明确的类型,编译器也会检查变量类型的正确性。在Go语言中,声明变量时将变量的类型放在变量的名称之后,避免含糊不清的声明形式。通过下面代码了解变量声明的基本样式代码说明:比如上面的程序输出为变量的声明主要有以下几种标准格式格式为:声明变量以关键字var开头,后置变量类型,末尾不需要分号。批量格式使用关键字var和括号,可以将一组变量定义放在一起。简短格式简短格式有以下限制:简短格式拥有简洁和灵活的特点,被广泛用于大部分的局部变量的声明和初始化,往往用于显式指定变量类型原创 2022-07-08 10:21:44 · 367 阅读 · 0 评论