
Golang
文章平均质量分 67
defending
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
go 基本命令
go build这个命令主要用于编译代码。在包的编译过程中,若有必要,会同时编译与之相关联的包。-o 指定输出的文件名,可以带上路径,例如 go build -o a/b/c-i 安装相应的包,编译+go install-a 更新全部已经是最新的包的,但是对标准包不适用-n 把需要执行的编译命令打印出来,但是不执行,这样就可以很容易的知道底层是如何运行的-p n 指定可以并行可运行的编译数目,默认...转载 2018-05-01 19:34:23 · 230 阅读 · 0 评论 -
Go语言-select语句
select语句属于条件分支流程控制方法,不过它只能用于通道。它可以包含若干条case语句,并根据条件选择其中的一个执行。进一步说,select语句中的case关键字只能后跟用于通道的发送操作的表达式以及接收操作的表达式或语句。示例如下:ch1 := make(chan int, 1)ch2 := make(chan int, 1)// 省略若干条语句select {case e1 :=...转载 2018-05-02 21:25:18 · 2810 阅读 · 0 评论 -
golang,绘图包image
package mainimport ( "os" "image" "image/color" "image/png" "image/draw" "flag" "io/ioutil" "log" "github.com/golang/freetype" "g原创 2018-06-29 14:48:51 · 3186 阅读 · 0 评论 -
golang 模拟请求
package mainimport ( "net/http" "fmt" "io/ioutil" "net/url" "strings" //"time" //"reflect")func HttpGet(url string){ resp, err := http.Get(url) if err原创 2018-06-29 15:03:34 · 898 阅读 · 0 评论 -
xorm
package mainimport ( _ "github.com/go-sql-driver/mysql" "github.com/go-xorm/xorm" "fmt")type Db_row struct {}func main(){ e,err:=xorm.NewEngine("mysql","root:root@tcp(192.168.25.120)/db_glass_...原创 2018-07-12 14:43:56 · 564 阅读 · 0 评论 -
Xorm 事务
resp := make(map[string] interface{}) db_glass_local_order := database.Db_conn["db_glass_local_order"] sess := db_glass_local_order.NewSession() order_id := c.PostForm("order_id") custom...原创 2018-07-12 14:47:28 · 1493 阅读 · 0 评论 -
与数据库交互(以mysql为例)
与数据库交互(以mysql为例)• 与数据库交互我们需要安装这些包 – "github.com/go-sql-driver/mysql“– "database/sql“• 连接数据库: – db,err := sql.Open("mysql","root:root@tcp(192.168.25.108:3306)/db_goals?charset=utf8")if err!=nil { fmt...原创 2018-07-12 14:48:55 · 3839 阅读 · 0 评论 -
Udp通信
Clientpackage mainimport ( "net" "fmt")func main() { sip := net.ParseIP("127.0.0.1") srcAddr := &net.UDPAddr{IP: net.IPv4zero, Port:0} dstAddr := &net.UDPAddr{IP: sip, Port: 9981} ...原创 2018-07-12 14:50:17 · 329 阅读 · 0 评论 -
使用读写锁来保证数据安全
package initializationimport ( "time" "github.com/gin-gonic/gin" "monitor/server/dingding" "monitor/server/email" "sync")type RLMap struct{ Data map[string]time.Time sync.RWMutex}func (...原创 2018-07-12 14:51:26 · 480 阅读 · 0 评论 -
Go 错误处理 实现Try
func HttpGet(url string){ resp, err:= http.Get(url) if err!= nil{ fmt.Println(err) } defer resp.Body.Close() body, err:= ioutil.ReadAll(resp.Body) if err!= nil{ fmt.Println(err) ...转载 2018-07-12 14:52:13 · 1381 阅读 · 0 评论 -
读execl 输出 json
package mainimport ( "github.com/Luxurioust/excelize" "fmt" "os" "github.com/gin-gonic/gin/json")func main(){ var aa =[]map[string]string{} xlsx, err:= excelize.OpenFile("C:\\GO_WorkSpace\\...原创 2018-07-12 14:53:39 · 235 阅读 · 0 评论 -
log包的应用
package loggerimport ( "log" "os" "time" "io" "fmt" "cary-lib/api-service/config" "github.com/gin-gonic/gin")type LogFile struct { level map[string]string fileName string dat原创 2018-07-12 14:55:39 · 444 阅读 · 0 评论 -
sftp_download
package mainimport ( "fmt" "github.com/pkg/sftp" "golang.org/x/crypto/ssh" "log" "net" "os" "path" "time")func connect(user, password, host string, port int) (*sftp.Clien...原创 2019-05-18 16:32:45 · 940 阅读 · 0 评论 -
条码
package mainimport ( "image" "image/color" "image/draw" "image/png" "os" "github.com/boombuler/barcode" "github.com/boombuler/barcode/code128" "golang.org/x/image/font" "...原创 2019-05-18 16:33:45 · 590 阅读 · 0 评论 -
addTwoNumbers
package mainimport "fmt"type ListNode struct { Val int Next *ListNode}func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode { l3 := &ListNode{} figure := 0 node1 := l1...原创 2019-05-18 16:48:28 · 401 阅读 · 0 评论 -
Go语言-for语句
for语句代表着循环。一条语句通常由关键字for、初始化子句、条件表达式、后置子句和以花括号包裹的代码块组成。其中,初始化子句、条件表达式和后置子句之间需用分号分隔。示例如下:for i := 0; i < 10; i++ { fmt.Print(i, " ")} 我们可以省略掉初始化子句、条件表达式、后置子句中的任何一个或多个,不过起到分隔作用的分号一般需要被保留下来...转载 2018-05-02 21:10:09 · 2965 阅读 · 0 评论 -
Go语言-switch语句
与串联的if语句类似,switch语句提供了一个多分支条件执行的方法。不过在这里用一个专有名词来代表分支——case。每一个case可以携带一个表达式或一个类型说明符。前者又可被简称为case表达式。因此,Go语言的switch语句又分为表达式switch语句和类型switch语句。 先说表达式switch语句。在此类switch语句中,每个case会携带一个表达式。与if语句中的...转载 2018-05-02 21:09:21 · 3032 阅读 · 0 评论 -
Go语言-变量和常量
在这里需要优先说明的是用于声明变量的关键字var,以及用于声明常量的关键字const。要知道,绝大多数的数据类型的值都可以被赋给一个变量,包括函数。而常量则不同,它只能被赋予基本数据类型的值本身。 变量和常量在声明方式方面也有所不同。我们可以在声明一个变量的时候直接为它赋值,也可以只声明不赋值。变量的声明并赋值方式如下:// 注释:普通赋值,由关键字var、变量名称、变量类型、特殊标记=,以及...转载 2018-05-01 20:15:14 · 153 阅读 · 0 评论 -
Go语言-整数类型
Go语言的整数类型一共有10个。 其中计算架构相关的整数类型有两个,即:有符号的整数类型int和无符号的整数类型uint。 顺便提一下,有符号的整数类型会使用最高位的比特(bit)表示整数的正负。显然,这会对它能表示的整数的范围有一定的损耗(使其缩小)。而无符号的整数类型会使用所有的比特位来表示数值。如此类型的值均为正数。这也是用“无符号的”来形容它们的原因。 言归正...转载 2018-05-01 20:16:22 · 2097 阅读 · 0 评论 -
Go语言-浮点数类型
浮点数类型有两个,即float32和float64。你可能已经想到,存储这两个类型的值的空间分别需要4个字节和8个字节。 浮点数类型的值一般由整数部分、小数点“.”和小数部分组成。其中,整数部分和小数部分均由10进制表示法表示。不过还有另一种表示方法。那就是在其中加入指数部分。指数部分由“E”或“e”以及一个带正负号的10进制数组成。比如,3.7E-2表示浮点数0.037。又比如,3....转载 2018-05-01 20:26:32 · 1228 阅读 · 0 评论 -
Go语言-复数类型
复数类型同样有两个,即complex64和complex128。存储这两个类型的值的空间分别需要8个字节和16个字节。实际上,complex64类型的值会由两个float32类型的值分别表示复数的实数部分和虚数部分。而complex128类型的值会由两个float64类型的值分别表示复数的实数部分和虚数部分。 复数类型的值一般由浮点数表示的实数部分、加号“+”、浮点数表示的虚数部分,以及小写...转载 2018-05-01 20:27:38 · 3563 阅读 · 1 评论 -
byte与rune
byte与rune类型有一个共性,即:它们都属于别名类型。byte是uint8的别名类型,而rune则是int32的别名类型。 byte类型的值需用8个比特位表示,其表示法与uint8类型无异。因此我们就不再这里赘述了。我们下面重点说说rune类型。 一个rune类型的值即可表示一个Unicode字符。Unicode是一个可以表示世界范围内的绝大部分字符的编码规范。关于它的详...转载 2018-05-01 20:30:15 · 517 阅读 · 0 评论 -
Go语言-数组类型
一个数组(Array)就是一个可以容纳若干类型相同的元素的容器。这个容器的大小(即数组的长度)是固定的,且是体现在数组的类型字面量之中的。比如,我们声明了一个数组类型:type MyNumbers [3]int注:类型声明语句由关键字type、类型名称和类型字面量组成。 所谓类型字面量,就是用于表示某个类型的字面表示(或称标记方法)。相对的,用于表示某个类型的值的字面表示可被称为值字面...转载 2018-05-01 20:32:58 · 2143 阅读 · 0 评论 -
Go语言-切片类型
切片(Slice)与数组一样,也是可以容纳若干类型相同的元素的容器。与数组不同的是,无法通过切片类型来确定其值的长度。每个切片值都会将数组作为其底层数据结构。我们也把这样的数组称为切片的底层数组。 表示切片类型的字面量如:[]int 或[]string 可以看到,它们与数组的类型字面量的唯一不同是不包含代表其长度的信息。因此,不同长度的切片值是有可能属于同一个类型的。...转载 2018-05-01 21:29:00 · 1152 阅读 · 0 评论 -
Go语言-字典类型
Go语言的字典(Map)类型其实是哈希表(Hash Table)的一个实现。字典用于存储键-元素对(更通俗的说法是键-值对)的无序集合。注意,同一个字典中的每个键都是唯一的。如果我们在向字典中放入一个键值对的时候其中已经有相同的键的话,那么与此键关联的那个值会被新值替换。 字典类型的字面量如下:map[K]T 其中,“K”意为键的类型,而“T”则代表元素(或称值)的类型。如...转载 2018-05-01 21:34:27 · 2931 阅读 · 0 评论 -
Go语言-通道类型
通道(Channel)是Go语言中一种非常独特的数据结构。它可用于在不同Goroutine之间传递类型化的数据,并且是并发安全的。相比之下,我们之前介绍的那些数据类型都不是并发安全的。这一点需要特别注意。 Goroutine(也称为Go程序)可以被看做是承载可被并发执行的代码块的载体。它们由Go语言的运行时系统调度,并依托操作系统线程(又称内核线程)来并发地执行其中的代码块。至于怎样编写...转载 2018-05-01 21:41:05 · 676 阅读 · 0 评论 -
Go语言-函数
在Go语言中,函数是一等(first-class)类型。这意味着,我们可以把函数作为值来传递和使用。函数代表着这样一个过程:它接受若干输入(参数),并经过一些步骤(语句)的执行之后再返回输出(结果)。特别的是,Go语言中的函数可以返回多个结果。 函数类型的字面量由关键字func、由圆括号包裹参数声明列表、空格以及可以由圆括号包裹的结果声明列表组成。其中,参数声明列表中的单个参数声...转载 2018-05-02 20:57:24 · 362 阅读 · 0 评论 -
Go语言-结构体和方法
Go语言的结构体类型(Struct)比函数类型更加灵活。它可以封装属性和操作。前者即是结构体类型中的字段,而后者则是结构体类型所拥有的方法。 结构体类型的字面量由关键字type、类型名称、关键字struct,以及由花括号包裹的若干字段声明组成。其中,每个字段声明独占一行并由字段名称(可选)和字段类型组成。示例如下:type Person struct { Name str...转载 2018-05-02 21:00:37 · 552 阅读 · 0 评论 -
Go语言-接口
在Go语言中,一个接口类型总是代表着某一种类型(即所有实现它的类型)的行为。一个接口类型的声明通常会包含关键字type、类型名称、关键字interface以及由花括号包裹的若干方法声明。示例如下:type Animal interface { Grow() Move(string) string} 注意,接口类型中的方法声明是普通的方法声明的简化形式。它们只包括方法名称、参...转载 2018-05-02 21:02:13 · 588 阅读 · 0 评论 -
Go语言-指针
我们在前面多次提到过指针及指针类型。例如,*Person是Person的指针类型。又例如,表达式&p的求值结果是p的指针。方法的接收者类型的不同会给方法的功能带来什么影响?该方法所属的类型又会因此发生哪些潜移默化的改变?现在,我们就来解答第一个问题。至于第二个问题,我会在下一小节予以解答。 指针操作涉及到两个操作符——&和*。这两个操作符均有多个用途。但是当它们作为地址操作符...转载 2018-05-02 21:08:02 · 378 阅读 · 0 评论 -
Go语言-if语句
Go语言的流程控制主要包括条件分支、循环和并发。在本章,我们先来谈谈基本的流程控制语句。具体到本小节,我们将提及if语句。 if语句一般会由关键字if、条件表达式和由花括号包裹的代码块组成。所谓代码块,即是包含了若干表达式和语句的序列。在Go语言中,代码块必须由花括号包裹。另外,这里的条件表达式是指其结果类型是bool的表达式。一条最简单的if语句可以是:if 100 > numb...转载 2018-05-02 21:08:48 · 6110 阅读 · 0 评论 -
Go Context
https://www.flysnow.org/2017/05/12/go-in-action-go-context.html控制并发有两种经典的方式,一种是WaitGroup,另外一种就是Context,今天我就谈谈Context。什么是WaitGroupWaitGroup以前我们在并发的时候介绍过,它是一种控制并发的方式,它的这种方式是控制多个goroutine同时完成。fu...转载 2019-07-22 14:20:23 · 263 阅读 · 0 评论