
Golang基础
文章平均质量分 61
记录学习Golang的过程
sut_uestc
天道酬勤,保持学习的激情,坚持就是胜利!
展开
-
Golang里面的包导入
单行导入与多行导入在 Go 语言中,一个包可包含多个 .go 文件(这些文件必须得在同一级文件夹中),只要这些 .go 文件的头部都使用 package 关键字声明了同一个包。导入包主要可分为两种方式:单行导入import "fmt"import "sync"多行导入import( "fmt" "sync")如你所见,Go 语言中 导入的包,必须得用双引号包含,在这里吐槽一下。2. 使用别名在一些场景下,我们可能需要对导入的包进行重新命名,比如我们导入了两个具有同原创 2021-06-10 18:37:13 · 1951 阅读 · 0 评论 -
Go Modules从入门到入魂
前言在以前,Go 语言的的包依赖管理一直都被大家所诟病,Go官方也在一直在努力为开发者提供更方便易用的包管理方案,从最初的 GOPATH 到 GO VENDOR,再到最新的 GO Modules,虽然走了不少的弯路,但最终还是拿出了 Go Modules 这样像样的解决方案。目前最主流的包依赖管理方式是使用官方推荐的 Go Modules ,这不前段时间 Go 1.14 版本发布,官方正式放话,强烈推荐你使用 Go Modules,并且有自信可以用于生产中。本文会大篇幅的讲解 Go Modules 的原创 2021-06-10 17:12:59 · 565 阅读 · 1 评论 -
Golang反射
前言先看一个问题,反射的使用场景type Monster struct { Name string `json:"monster_name"` -- 反射机制 Age int `json:"monster_age"` Birthday string //.... Sal float64 Skill string}使用反射机制,编写函数的适配器, 桥连接要求如下:定义了两个匿名函数test1 := func(v1 int, v2 int){t.Log(v1, v2)test2原创 2021-06-09 17:15:55 · 285 阅读 · 0 评论 -
Golang管道的注意事项和使用细节
管道的注意事项和使用细节-- 1. 在默认情况下下,管道是双向var chan1 chan int //可读可写 -- 2 声明为只写var chan2 chan<- intchan2 = make(chan int, 3)chan2<- 20//num := <-chan2 //errorfmt.Println("chan2=", chan2) -- 3. 声明为只读var chan3 <-chan intnum2 := <-chan3//chan原创 2021-06-09 15:35:25 · 327 阅读 · 0 评论 -
Goland运行go语言编译时报createProcess error=5,拒绝访问的错误
问题Goland运行go语言编译时报createProcess error=5,拒绝访问的错误解决方案关闭360!!!关闭360!!!关闭360!!!问题原因360拦截了,欲哭无泪QAQ原创 2021-06-08 20:21:10 · 1491 阅读 · 3 评论 -
goroutine和channel的配合使用简单案例
任务描述请完成goroutine和channel协同工作的案例,具体要求:1)开启一个writeData协程,向管道intChan中写入50个整数.2)开启一个readData协程,从管道intChan中读取writeData写入的数据。3)注意:writeData和readDate操作的是同一个管道4)主线程需要等待writeData和readDate协程都完成工作才能退出示意图:代码运行结果将intChan大小为50时,运行多次程序仍然是按顺序打印的,并没有体现协程的特点,不知原创 2021-06-08 20:17:39 · 226 阅读 · 0 评论 -
Golang序列化
json介绍json数据格式json数据在线解析https://www.json.cn/网站可以验证一个json格式的数据是否正确。尤其是在我们编写比较复杂的json格式数据时,很有用。json序列化json序列化是指,将有key-value结构的数据类型(比如结构体、map、切片序列化成json字符串的操作。应用案例这里我们介绍一下结构体、map和切片的序列化,其它数据类型的序列化类似。package mainimport ( "encoding/json" "fmt")原创 2021-06-07 20:58:59 · 711 阅读 · 0 评论 -
Golang中的map排序
前言Golang中map类型的键值key/value都是无序排列的,运行多次输出的次序也是不一定的(据说后面版本是默认升序的,本人未验证)。那么如何多map进行排序输出呢?正文这里我们考虑下面这种map如何按照数字大小排序输出? map1["Mon"]=1 map1["Tue"]=2 map1["Wed"]=3 map1["Thu"]=4 map1["Fri"]=5 map1["Sat"]=6 map1["Sun"]=7首先将key/value拷贝进一个切片,对切片调用sort包进原创 2021-06-07 20:22:31 · 670 阅读 · 0 评论 -
Golang类型断言
前言由一个具体的需要,引出了类型断言基本介绍类型断言,由于接口是一般类型,不知道具体类型,如果要转成具体类型,就需要使用类型断言,具体的如下对上面代码的说明:在进行类型断言时,如果类型不匹配,就会报panic,因此进行类型断言时,要确保原来的空接口指向的就是断言的类型。如何在进行断言时,带上检测机制,如果成功就ok,否则也不要报panic。实战1、在前面【GO语言使用之面向对象编程(8)面向对象三大特征之多态】的Usb接口案例做改进:给Phone结构体增加一个特有的方法call(), 当原创 2021-06-07 16:32:48 · 263 阅读 · 0 评论 -
Golang中的接口
基本介绍按顺序,我们应该讲解多态,但是在讲解多态前,我们需要讲解接口(interface),因为在Golang中多态特性主要是通过接口来体现的为什么要有接口接口快速入门这样的设计需求在Golang编程中也是会大量存在的,我曾经说过,一个程序就是一个世界,在现实世界存在的情况,在程序中也会出现。我们用程序来模拟一下前面的应用场景package mainimport "fmt"//定义一个接口type Usb interface { Start() Stop()}//定义一个手机t原创 2021-06-07 11:17:29 · 532 阅读 · 0 评论 -
Golang面向对象编程三大特性-继承
写在前言作为一个在校学习了三年的Java后端开发程序员来说,由于校招工作的需要,要转语言为Golang,一开始内心是有点拒绝的,毕竟Java的生态非常成熟,求职岗位很多。但是,随着Golang语言的发展和云计算的成熟,国内大厂如腾讯、百度、字节等也越来越多的使用Golang,所以尝试一下新的语言也未曾不可。巴拉巴拉了半天(废话连篇哈哈),下面直蹦主题吧~继承继承可以解决代码复用的问题。当多个结构体存在相同的属性(字段)和方法时,可以从这些结构体中抽象出一个匿名结构体,在该结构体中定义相同的属性(字段)原创 2021-06-06 21:11:56 · 340 阅读 · 3 评论 -
Golang里面的预申明标识符iota
原文链接https://studygolang.com/articles/22468?fr=sidebar一、先来一段代码const ( a = iota b c)相信你能脱口答出来,常量 a 等于 0,此后定义的常量依次递增,b = 1,c = 2。没毛病,这有何难?是的,我此前也和你一样,觉得自己已经搞懂了 golang 里的 iota 的用法了,即使它有什么鲜有人知鬼畜的神奇花招,我也没兴趣细究,毕竟我并不喜欢研究奇技淫巧。直到不久前的一天,我在一次代码研读会上转载 2020-10-17 10:54:21 · 253 阅读 · 0 评论 -
golang里面符号”...“的作用
前言在Golang中,三个点一共会用在四个地方正文变长的函数参数如果最后一个函数参数的类型的是…T,那么在调用这个函数的时候,我们可以在参数列表的最后使用若干个类型为T的参数。这里,…T在函数内部的类型实际是[]T.func Sum(nums ...int) int { res := 0 for _, n := range nums { res += n } return res}Sum(1,2,3)调用拥有变长参数列表的函数(将切片打开)原创 2021-06-05 10:28:22 · 458 阅读 · 0 评论 -
golang中的rune类型
前言在学习golang基础的时候,发现有个叫rune的的数据类型,因为本人之前一直学习的是Java相关的知识,这里对于golang里面的rune类型确实感到很不理解。因此,特写这篇文章一探究竟。正文官方文档解释// rune is an alias for int32 and is equivalent to int32 in all ways. It is// used, by convention, to distinguish character values from integer va原创 2021-06-04 19:52:20 · 5498 阅读 · 4 评论 -
Golang的切片
前言Go 数组的长度不可改变,在特定场景中这样的集合就不太适用,Go中提供了一种灵活,功能强悍的内置类型切片(“动态数组”),与数组相比切片的长度是不固定的,可以追加元素,在追加时可能使切片的容量增大Go的切片类型为处理同类型数据序列提供一个方便而高效的方式。 切片有些类似于其他语言中的数组,但是有一些不同寻常的特性。 本文将深入切片的本质,并讲解它的用法。数组Go的切片是在数组之上的抽象数据类型,因此在了解切片之前必须要先理解数组。数组类型定义了长度和元素类型。例如, [4]int 类型表示一个原创 2021-06-04 15:58:43 · 225 阅读 · 0 评论