golang
文章平均质量分 50
golang
Leo Han
Leo Han
展开
-
golang项目依赖管理工具go vendor,go mod
go项目依赖管理工具 go vendor go mod原创 2022-06-21 19:45:42 · 1408 阅读 · 1 评论 -
golang中指针,new和make函数作用
我们知道golang中的传递都是基于值传递,如果一个结构体比较大,这时候值传递需要复制的内容就比较多同时由于是基于值复制,耗费空间和时间,另外,基于值传递我们在调用的函数中对传入的参数进行修改,对于原值是没有任何影响的,也就是我们无法在函数中对传入的参数的原值进行修改因此golang中提供了指针,和c、c++中的指针的概念类似,这时候传递的是指针,也是值复制,但是复制的是指针(指针比较小),这样我们既能够快速的将参数传递过去,同事也能够对原值进行修改。需要注意的是,golang中存在另种内存模块,即我们原创 2022-05-13 15:28:07 · 515 阅读 · 0 评论 -
golang中生成随机数
golang中生成随机数可以使用rand提供的相关接口,但是需要注意的是,rand必须要指定一个种子,一般采用当前时间的纳秒。func New(src Source) *Rand { s64, _ := src.(Source64) return &Rand{src: src, s64: s64}}func NewSource(seed int64) Source { var rng rngSource rng.Seed(seed) return &rng}通过上述两原创 2022-05-12 14:11:53 · 1929 阅读 · 0 评论 -
解决go get proxy代理慢的问题
使用go get的时会发现特别慢,有时候甚至无法访问,这时候按照如下配置即可:系统环境变量中使用阿里云的go get代理:GOPROXY=https://mirrors.aliyun.com/goproxy/即可原创 2021-09-16 17:04:30 · 854 阅读 · 0 评论 -
golang中定时器实现,Ticker,Timer
在golang中,我们可以通过time包的Sleep、Ticker、Timer来实现定时效果。Sleep先看Sleep如何实现一个定时:func main() { var flag chan int go func() { for { time.Sleep(time.Duration(time.Second*5)) fmt.Println(time.Now().Format("2006-01-02 15:04:05")) } }() <-flag}Ticker原创 2022-05-11 17:02:30 · 920 阅读 · 0 评论 -
golang中日期操作,日期格式化,日期转换
golang中并没有像java一样提供类似yyyy-MM-dd HH:mm:ss格式的操作,而是将其定义为golang的诞生时间:2006-01-02 15:04:05 -0700 MST注意这在golang的日期格式化里不是一个具体日期,而是格式,这样如果我们需要格式化日期,可以如下操作timeNow := time.Now()fmt.Println("yyyy-MM-dd HH:mm:ss" ,timeNow.Format("2006-01-02 15:04:05"))// 打印: yyyy-原创 2022-05-11 14:53:28 · 4124 阅读 · 1 评论 -
golang中连接mysql数据库,操作数据库
golang中连接数据库需要首先下载对应数据库的客户端驱动,我们以mysql为例:首先下载mysql客户端驱动:go get github.com/go-sql-driver/mysql然后通过sql.Open获取一个数据库连接:url :="root:123456@tcp(127.0.01)/golang"con,err := sql.Open("mysql",url)接下来我们看看怎么操作数据库:package modelimport ( "database/sql" "f原创 2022-05-11 14:07:36 · 1661 阅读 · 0 评论 -
golang中内存管理、分配
我们知道传统C/C++编程,程序员是需要自己来手动管理内存的,一般通过malloc来申请内存,通过free、delete来释放内存,而这两个函数操作的对象一般都是指针。而对于高级语言(Java、Golang、Python等),程序员在编写代码时,则无需关系内存的申请和释放,能够从内存的管理中解脱出来。一般程序运行都有所谓的堆区和栈区。栈区是方法运行的区域,当调用一个方法的时候,该方法入栈,然后一些局部变量在栈上分配,当函数执行完之后,栈上对应函数空间出栈销毁。如果我们需要将函数执行过程中的一些数据返回,一原创 2022-05-06 17:42:38 · 2241 阅读 · 0 评论 -
golang中并发、gorutine
我们知道golang的一个重要特性就是能够支持极高的并发。而实现这个特性则是golang中的rorutine机制。在说goroutine之前,我们先说明几个概念:进程、线程、协程进程:程序运行的基本单位,一个运行的程序就是一个进程,进程之间相互隔离,拥有不同的内存空间,无法共享内存数据。线程:线程也可以说是轻量级的进程,一般一个程序(或者说一个进程)包含若干个线程,线程依赖于进程,一般进程是作为分配资源的基本单位,而把线程作为独立运行和调度基本单位。同一个进程下的不同线程拥有同一个内存空间,可以共享内存原创 2022-05-04 23:01:36 · 495 阅读 · 0 评论 -
golang中异常处理
程序在运行过程中如果出现了问题,可以通过抛出异常、捕获异常来进行异常的处理,在golang中,异常的接口为error:type error interface { Error() string}因此,只要一个结构体实现了Error() string方法,就是实现了error接口:type MyError struct {}func (err *MyError)Error() string{ return "this is MyError"}golang中可以通过panic来抛出异常原创 2022-05-03 17:27:17 · 2589 阅读 · 0 评论 -
golang中结构体
golang其实并不是一个完全意义上的面向对象语言,其实现面向对象的多态主要基于接口和结构体实现。在golang中结构体与c/c++中的结构体类似,用来定义复杂的数据类型,一般结构体定义如下:type StructName struct{ fieldName1 type1 fidldName2 type2 ...}需要注意的是:结构体的包名在同一个包内必须唯一,不能重复结构体的字段必须唯一,不能重复同类型的结构体字段可以放在一行定义一般结构体实例化可以通过如下方原创 2022-05-02 23:01:32 · 1587 阅读 · 0 评论 -
golang中接口、继承
在面向对象编程中(OOP)接口定义对象的一系列行为,具体对象实现接口的行为。在golang中,接口就是一组方法签名,如果某个类型实现了该接口的全部方法,这个类型就实现了该接口,是该接口的实现。在golang中接口定义示例如下:type MyInterface interface { SayHello() GetAge() int}这样我们就定义了一个MyInterface类型的接口,如果我们想要实现这个接口,只要一个类型实现MyInterface的两个方法:SayHello、GetAge:t原创 2022-05-01 23:08:14 · 2969 阅读 · 0 评论 -
golang中函数与方法
函数是golang中的`一等公民,可以作为普通变量、方法参数、方法返回值等,一般golang中函数定义如下:func name(arg1 type1,args2 type2)(result1 type1,result2 type2){ ....}也可以省略返回列表的结果名称:func name(arg1 type1,args2 type2) (type1,type2){ ....}如果返回参数只有一个,可以不用括号:func name(arg1 type1,args2 ty原创 2022-04-26 17:54:17 · 1680 阅读 · 0 评论 -
golang中条件、循环、控制语句
这个篇幅是学习golang入门记录,方便查找for循环for循环还是golang中的唯一循环语句,golang中没有while循环。for循环形式一:for i:=0;i<10;i++ { fmt.Println(i)}这是标准的for循环格式for循环形式二index := 0for index < 10 { fmt.Println(index) index ++}或者:index := 0for ;index < 10; { fmt.Pr原创 2022-04-26 17:38:04 · 905 阅读 · 0 评论 -
golang变量定义、数据类型、可见性
golang中主要基础数据类型如下:类型描述uint8无符号 1个字节8位整型 (0 到 255)uint16无符号 2字节16位整型 (0 到 65535)uint32无符号 4字节32位整型 (0 到 4294967295)uint64无符号 8字节64位整型 (0 到 18446744073709551615)int8有符号 1字节8位整型 (-128 到 127)int16有符号 2字节16位整型 (-32768 到 32767)原创 2022-04-26 17:15:08 · 1149 阅读 · 0 评论