
Golang
事后诸葛亮
深入浅出!
展开
-
一、第一个GO程序
Golang开发工具及资料Go语言官网(需要翻墙):https://golang.org/go中文社区:https://studygolang.comgo中文在线文档:https://studygolang.com/pkgdoc环境安装有zip压缩版和msi安装版两个按本下载。(这里使用msi安装版,比较方便)。运行msi安装文件,千万不要在安装路径中出现中文,一路Next。设...原创 2019-01-17 21:02:36 · 306 阅读 · 0 评论 -
十二、网络编程
1.TCP编程服务器:func main() { //指定服务器通信协议、IP地址、端口号 listener, err := net.Listen("tcp", "127.0.0.1:8000") if err != nil { fmt.Println(err) return } defer listener.Close() //关闭 //阻塞监听客户端连接请求 c...原创 2019-02-20 22:34:24 · 247 阅读 · 0 评论 -
十三、网络聊天室
服务端package mainimport ( "net" "fmt" "strings" "time")//创建用户结构体类型type Client struct { C chan string Name string Addr string}//创建全局map,存储在线用户var onlineMap map[string]Client//创建全...原创 2019-02-20 22:34:49 · 259 阅读 · 0 评论 -
十四、爬虫
1.爬取百度贴吧//HTTP网页请求func HttpGet(i int, url string) (result string, err error) { resp, err1 := http.Get(url) if err1 != nil { err = err1 //将封装函数内部的错误,传出给调用者。 fmt.Println("http.Get err:", err) ...原创 2019-02-20 22:35:21 · 296 阅读 · 0 评论 -
十五、JSON处理
1、编码为JSON格式使用json.Marshal()函数可以对一组数据进行JSON格式的编码。Go语言的大多数数据类型都可以转化为有效的JSON文本,但channel、complex和函数这几种类型除外。如果转化前的数据结构中出现指针,那么将会转化指针所指向的值,如果指针指向的是零值,那么null将作为转化后的结果输出。结构体会转化为JSON对象,并且只有结构体里边以大写字母开头的可被...原创 2019-02-20 22:35:40 · 256 阅读 · 0 评论 -
十六、反射
1.基本用法func main() { var x float64 = 3.4 //1.获取类型信息 fmt.Println("type:", reflect.TypeOf(x)) //type: float64 v := reflect.ValueOf(x) fmt.Println("type:", v.Type()) /...原创 2019-02-20 22:36:01 · 229 阅读 · 0 评论 -
十七、连接数据库
1.GO连接MySQL因为Go语言没有提供任何官方数据库驱动,所以需要安装第三方函数库。需要安装git软件,安装过程一直点击下一步即可。安装完成后需要配置环境变量${git_home}/bin设置GOPATH的环境变量,这样驱动才会下载到项目根目录中。在cmd命令窗口中输入如下命令安装驱动:go get github.com/go-sql-driver/mysql执行完上面这个命令就会...原创 2019-02-20 22:36:28 · 364 阅读 · 0 评论 -
十八、C与GO混合编程
作为一门直接传承于C的语言,Go当然应该将与C语言的交互作为首要任务之一。Go确实也提供了这一功能,称为Cgo。由于cgo需要gcc支持,所以需要配置gcc环境,如果是linux下一般可以跳过该步骤,win下则需要自己安装了,这里我们使用MinGW由于我是64位,这里下载64位的POSIX版本。具体的安装过程就不费话了,直接解压即可。安装完成后需要配置环境变量${home}/binhttp...原创 2019-02-20 22:36:50 · 1411 阅读 · 2 评论 -
十九、Beego框架快速入门
Beego框架快速入门1.框架了解go语言的web框架:beego,gin,echo等等,那为什么我们选择beego呢?第一,beego是中国人开发的,开发文档比较详细,beego官网网址: https://beego.me/ 。第二,现在公司里面用beego的也比较多,比如今日头条,百度云盘,腾讯,阿里等。2.环境搭建这里默认大家已经搭建好了go语言的开发环境。需要安装Bee...原创 2019-03-06 14:33:32 · 79829 阅读 · 0 评论 -
十一、并发编程
1.goroutineGo 语言在语言级别支持轻量级线程,叫goroutine。在一个函数调用前加上go关键字,这次调用就会在一个新的goroutine中并发执行。当被调用的函数返回时,这个goroutine也自动结束了。需要注意的是,如果这个函数有返回值,那么这个返回值会被丢弃。创建于进程中。直接使用 go 关键,放置于函数调用前面,产生一个 go程(并发)。goroutine的特...原创 2019-02-20 22:33:43 · 229 阅读 · 0 评论 -
十、字符串操作
1.字符串操作在对字符串进行处理时,需要借助于包“strings”1.1 Containsfunc Contains(s, substr string) bool功能:字符串s中是否包含substr,返回bool值func main() { str := "hello world" fmt.Println(strings.Contains(str, "hello")) //t...原创 2019-01-18 21:30:57 · 284 阅读 · 0 评论 -
二、变量、基本数据类型、常量、运算符
1.变量package mainimport "fmt"func main() { fmt.Println("定义变量") var a int = 10 //定义一个变量a同时将整数10赋值给a var b, c int //定义完变量b,c后,再对其赋值 b = 20 c = 30 fmt.Println("a =", a) fmt.Println("b =", b)...原创 2019-01-17 21:03:30 · 350 阅读 · 0 评论 -
三、流程控制
1.if语句func main() { //if支持一个初始化语句,初始化语句和判断条件以分号分隔 if score := 97; score >= 90 && score <= 100 { fmt.Println("本次考试,等级为A") } else if score >= 80 && score < 90 { fmt.P...原创 2019-01-17 21:04:19 · 200 阅读 · 0 评论 -
四、函数
1.普通参数列表func main() { car("奔驰") car("宝马")}func car(name string) { fmt.Println(name, ",汽车开跑了。。。")}2.不定参数列表使用不定参数时,一定(只能)放在形参中的最后一个参数。在对函数进行调用时,固定参数必须传值,不定参数可以根据需要来决定是否要传值。func main() { ...原创 2019-01-17 21:04:47 · 241 阅读 · 0 评论 -
五、包
工程管理为了更好的管理项目中的文件,要求将文件都要放在相应的文件夹中。GO语言规定如下的文件夹如下:(1)src目录:用于以代码包的形式组织并保存Go源码文件。(比如:.go .c .h .s等)(2)pkg目录:用于存放经由go install命令构建安装后的代码包(包含Go库源码文件)的“.a”归档文件。(3)bin目录:与pkg目录类似,在通过go install命令完成安装后,保...原创 2019-01-17 21:05:30 · 207 阅读 · 0 评论 -
六、复合数据类型
1.数组func main() { var a [10] int = [10] int{1, 2, 3, 4, 5, 5, 4, 3, 2, 1} for index, data := range a { fmt.Println(index, ":", data) } //部分初始化,没有初始化的元素,自动赋值为0 b := [10] int{1, 2, 3, 3, 2, 1}...原创 2019-01-17 21:06:24 · 262 阅读 · 0 评论 -
七、面向对象
严格意义上说,GO语言中没有类(class)的概念,但是我们可以将结构体比作为类,因为在结构体中可以添加属性(成员),方法(函数)。当然严格意义上,GO语言中是没有继承的,但是我们可以通过”匿名组合”来实现继承的效果。1.继承//继承type Person struct { id int name string age int}/** 通过匿名字段实现了继承,将公共...原创 2019-01-17 21:07:29 · 197 阅读 · 0 评论 -
八、异常处理
1.error接口package mainimport ( "fmt" "errors")func Test(a int, b int) (result int, err error) { err = nil if b == 0 { err = errors.New("除数不能为0") //当然fmt包中也封装了一个专门输出错误信息的方法,如下所示: //err =...原创 2019-01-17 21:08:06 · 407 阅读 · 0 评论 -
九、文本文件处理
1.创建文件GO语言中提供了一个Create( )函数专门创建文件.该函数在创建文件时,首先会判断要创建的文件是否存在,如果不存在,则创建,如果存在,会先将文件中已有的数据清空。同时,当文件创建成功后,该文件会默认的打开,所以不用在执行打开操作,可以直接向该文件中写入数据。package mainimport ( "os" "fmt")func CreateFile(pa...原创 2019-01-18 21:30:36 · 392 阅读 · 1 评论 -
二十、BoltDB k-v存储
Bolt 是一个纯粹的 Go key/value数据库。 该项目的目标是为不需要完整数据库服务器(如Postgres或MySQL)的项目提供一个简单,快速和可靠的数据库。如果您需要高随机写入吞吐量(> 10,000 w / sec)或者您需要使用旋转磁盘,则 LevelDB可能是一个不错的选择。 如果你的应用程序是重读的,或者做了很多范围扫描,Bolt 可能是一个不错的选择。Bolt ...原创 2019-04-12 19:34:01 · 575 阅读 · 0 评论