![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Golang
yí無所冇
这个作者很懒,什么都没留下…
展开
-
Go的学习旅程1:基本语法知识
1.变量的赋值package main//引入包import "fmt"//包内变量赋值(不能使用 :=)var ( a = 1 b = true c = "我是你爸爸")//变量赋值的方法(规定类型)func aaa() { //可以规定类型 var a, b, c int = 1, 2, 3 fmt.Println(a, b, c)}//变量赋值的方法(不...原创 2018-05-17 15:35:11 · 9019 阅读 · 0 评论 -
golang操作Redis&Mysql&RabbitMQ
Reids安装导入go get github.com/garyburd/redigo/redisimport "github.com/garyburd/redigo/redis"链接github:https://github.com/antirez/redisDoc:http://godoc.org/github.com/garyburd/redigo/redisRedis全套使用:http:/...转载 2018-07-04 11:42:38 · 318 阅读 · 0 评论 -
golang基础-互斥锁、读写锁
互斥锁其中Mutex为互斥锁,Lock()加锁,Unlock()解锁,使用Lock()加锁后,便不能再次对其进行加锁,直到利用Unlock()解锁对其解锁后,才能再次加锁.适用于读写不确定场景,即读写次数没有明显的区别,并且只允许只有一个读或者写的场景,所以该锁叶叫做全局锁。 func (m *Mutex) Unlock()用于解锁m,如果在使用Unlock()前未加锁,就会引起一个运行错误.已经...转载 2018-07-04 15:33:41 · 555 阅读 · 0 评论 -
golang时间戳和时间的转化
说实话,golang的时间转化还是很麻烦的,最起码比php麻烦很多,上码好好学学一下package mainimport ( "time" "fmt")func main() { //获取当前时间 t := time.Now() //2018-07-11 15:07:51.8858085 +0800 CST m=+0.004000001 fmt....原创 2018-07-11 15:30:32 · 115108 阅读 · 13 评论 -
golang在linux后台执行的方法
go build ./index.go会生成一个index的运行文件nohup index &后台运行index文件killall index你可能还要关闭index原创 2018-07-12 15:37:38 · 5285 阅读 · 1 评论 -
golang聊天室的搭建(实现room,群聊,指定room推送)加锁版本
package mainimport ( "log" "net/http" "github.com/gorilla/websocket" "sync" "fmt" "strconv" "encoding/json")//定义我们的消息对象type Message struct { Room_id int原创 2018-07-07 08:38:33 · 2832 阅读 · 0 评论 -
golang实现直播和点播功能
1.概述 刚开始做直播的时候,还是有些懵逼的,毕竟什么推拉流,什么格式协议完全不懂的,还有第三方的接口也是层出不穷,其实简单的说一下,如图(腾讯直播Api里面盗取的)其实所谓的推流就是主播的客户把我们要的播放内容按特定的流程存放于服务器,当然这里面展示的是腾讯云,完后经过通讯云的转码再让观众去观看(拉取),建议不是很明确基础的小伙伴去了解一下,理解起来还是很方便的.腾讯云传送...原创 2018-07-19 15:43:14 · 29486 阅读 · 6 评论 -
linux下对golang的安装
1、去官网下载: 最新的版本是go1.10.3.linux-amd64.tar.gzhttps://studygolang.com/dl完后利用rz上传文件; 2、解压并创建工作目录:tar -zxf go1.10.3.linux-amd64.tar.gz -C /usr/local/mkdir /www/wwwroot/go3、设置环境变量:在 /et...原创 2018-07-07 11:27:56 · 715 阅读 · 0 评论 -
golang中gin框架的基础学习和运用
1.安装go get gopkg.in/gin-gonic/gin.v1 2.基本的架构 2.1 直接调用方案package mainimport ( "github.com/gin-gonic/gin" "net/http")func main() { r := gin.Default() r.GET("/ping", func(c ...原创 2018-07-25 17:47:59 · 4945 阅读 · 0 评论 -
线性结构-链表 Linked List
1.链表的定义 类似于之前的栈与队列,链表也是一种线性的数据结构,但是又不同于他们,因为列表是真正的动态数据结构,如图: 在class中,分别定义了e和next,e可以理解为存储我们真正的数据,而next的类型则为Node,所以next是当前node节点的下一个节点,所以说链表好比一个火车,除了我们一节一...原创 2018-08-09 11:17:24 · 511 阅读 · 0 评论 -
golang中xorm的基本使用
简单的用法package mainimport ( _ "github.com/go-sql-driver/mysql" "github.com/go-xorm/xorm" "log")//定义结构体(xorm支持双向映射)type User struct { User_id int64 `xorm:"pk autoincr"` //指定主键并自增...原创 2018-07-31 17:40:53 · 11200 阅读 · 0 评论 -
golang下对slice的curd
1.slice的curdpackage arrimport "log"type Slice struct { A []int}/** * slice指定位置插入 * @index 插入的位置 * @e 插入的字符 */func (s *Slice) Add_list(index, e int) []int { if index > len(s.A) ...原创 2018-08-07 14:44:54 · 234 阅读 · 0 评论 -
树结构-二分搜索树
1.树的定义 树是一种数据结构,它是由n(n>=1)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的树,其中我们平常使用的目录就是常见的树; 1.1 二叉树的定义 在计算机科学中,二叉树是每个结点最多有两个子树的树结构。通常子树被称作“左子树”(left subtr...原创 2018-08-13 16:38:21 · 269 阅读 · 0 评论 -
golang中gorm包的操作
1.简单的连接和CURDpackage mainimport ( "github.com/jinzhu/gorm" _ "github.com/go-sql-driver/mysql" "time")type User struct { User_id int `gorm:"primary_key"` //指定主键并自增 Name string Pwd ...原创 2018-09-21 10:55:44 · 4050 阅读 · 2 评论 -
golang爬虫必备之发起Http请求及添加相关参数
golang想要爬取网站还是很简单的,只要利用官网给的net/http包中的client提供的方法实现。刚开始的时候是分不清其包的用法,今天来好好的总结一下的: 1.Get请求 直接使用http.Get的请求方式,就可以获取页面的信息,需要注意的是每次用完以后需要close的操作package mainimport ( "net/http" "fmt...原创 2018-07-09 11:15:55 · 7229 阅读 · 0 评论 -
Go的学习旅程9:Http,Web,websocket的简单实现
golang的web运行效率还是和nginx相同,而且实现起来还是很简单的; 简单的调用:serverpackage mainimport ( "net/http" "fmt")func hello(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello,世界!!")}func l...原创 2018-06-26 17:10:53 · 3972 阅读 · 0 评论 -
Go的学习旅程2:复合数据类型(数组,切片,map)
1.数组package mainimport ( "fmt")func hanaaa(arr [5]int) (int, int) { sum := 0 he := 0 for i, v := range arr { he += v sum += i } return sum, he}func main() { //数组的声明 var aaa [3]i...原创 2018-05-21 17:46:50 · 6060 阅读 · 0 评论 -
Go的学习旅程3:面向对象
1.结构体和方法在go中,是没有类class的定义的,但是类似于class的是typepackage main import ( "fmt" ) //定义一个类 type person struct { name string age int tel int } //构造函数 func con(nam...原创 2018-05-23 18:00:45 · 8988 阅读 · 0 评论 -
Go的学习旅程5:错误处理和资源管理
1.defer的用法defer的特点就是先入后出,所以在执行完正常语句后,在倒序执行deferpackage mainimport ( "fmt" "./feibo" "os" "bufio")//闭包的使用,闭包分为自由变量和局部变量,对于sum来说就是自由变量,他不在return的函数体中,v是局部变量func adder() func(int) (int,...原创 2018-05-28 13:56:55 · 6021 阅读 · 0 评论 -
Go的学习旅程6:并发与通信
1.并发goroutine是Go并行设计的核心。goroutine说到底其实就是协程,但是它比线程更小,十几个goroutine可能体现在底层就是五六个线程,Go语言内部帮你实现了这些goroutine之间的内存共享。执行goroutine只需极少的栈内存(大概是4~5KB),当然会根据相应的数据伸缩。也正因为如此,可同时运行成千上万个并发任务。goroutine比thread更易用、更高效、更轻...原创 2018-05-29 11:56:18 · 6115 阅读 · 0 评论 -
Go的学习旅程4:面向接口
1.面向接口的简单实现 因为go中没有class,只有结构体和方法,所以不存在class的继承与多态,但是我们可以通过interface原创 2018-05-24 08:50:07 · 6371 阅读 · 0 评论 -
Go的学习旅程7:Web的实现以及beego的
1.原生的hello,world运行时候输入go run xxx.go就可以通过浏览器访问:127.0.0.1:888package mainimport ( "fmt" "net/http" "log")func handler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello wor...原创 2018-05-30 11:30:29 · 6205 阅读 · 0 评论 -
go中简单聊天室搭建以及net的使用
只是初步完成了客户端对服务端的连接,并返回数据,暂时没有做点对点,多对多的聊天,完后会做补充 server.gopackage mainimport ( "net" "fmt" "strings" "io" "time")//处理数据func chuli(conn net.Conn) { //结束后关闭连接 defer conn.Clos...原创 2018-06-13 16:29:43 · 6716 阅读 · 0 评论 -
orm的理解
greenDao 是orm的一种orm 对象关系映射就是把关系型数据库 用对象表示出来所以 我们就可以以面向对象的方式 来操作关系型数据库了并且不用写sql 语句就可以实现增删改查这也就是现在比较流行的code first 相比传统的database first 有明显优势 ...原创 2018-05-31 10:54:08 · 6365 阅读 · 0 评论 -
Go的学习旅程8:系统研究goroute
主函数返回时,所有的goroutine都会被直接打断,程序退出。除了从主函数退出或者直接终止程序之外,没有其它的编程方法能够让一个goroutine来打断另一个的执行,但是之后可以看到一种方式来实现这个目的,通过goroutine之间的通信来让一个goroutine请求其它的goroutine,并让被请求的goroutine自行结束执行。原创 2018-06-07 13:54:49 · 7543 阅读 · 0 评论 -
go中多人聊天室的搭建
首先利用的是go的多协程,再利用goroute之间的通信,对多个任务的管控 服务端的搭建: server.gopackage mainimport ( "net" "fmt")//储存用户信息的方法体Ctype Client struct { C chan string Name string Addr string}//储存在线用...原创 2018-06-14 17:58:34 · 5402 阅读 · 0 评论 -
go简单爬虫的实现
单线程版本package mainimport ( "fmt" "strconv" "net/http" "os")func pachong(start, end int) { //明确爬的地址 url := "https://tieba.baidu.com/f?kw=%E6%AE%B5%E5%AD%90&ie=utf-8&pn="原创 2018-06-15 15:36:14 · 4377 阅读 · 1 评论 -
golang原生对mysql的操作
下载驱动sudo go get github.com/go-sql-driver/mysql如果提示这样的失败信息:cannot download, $GOPATH not set. For more details see: go help gopath,可以使用如下命令解决sudo env GOPATH=/Users/chenjiebin/golang go get github.com/go...转载 2018-06-25 14:08:39 · 2445 阅读 · 0 评论 -
golang解析复杂的json对象
json解析早就接触过了,只不过是一直用在php里面,今天有机会在golang中解析json,确实颠覆了php的json_decode(json)函数.好吧,今天我解析的汽车之家的接口,整个json数据用工具解析下来是这个样子:好吧,这里面有对象有数组交替,先去分析一下这个json的组成,懂行的小伙伴一定要注意这里面"[]"和"{}"的区别: ...原创 2018-06-26 16:03:34 · 20359 阅读 · 4 评论 -
go在64位环境下编译出32位程序
操作: 1.使用go env命令,查看系统的配置环境,可以看到GOARCH(当前系统)是amd64 2.执行 set GOARCH=386 配置go输出系统平台为32位,此时再用go env命令查看系统的配置环境,如图: 3.最后,大家直接使用go build 命令运行你得程序吧...原创 2018-11-02 11:37:55 · 20720 阅读 · 6 评论