
go
ScarletMeCarzy
这个作者很懒,什么都没留下…
展开
-
Go routine 实现斐波那契
//producerfunc testSelect(c,quit chan int){ x, y :=0,1 for{ select { case c<-x: x,y = y,x+y case <-quit: fmt.Print("quit...") return } }}func main() { c := make(chan int) quit := m.原创 2020-10-21 11:38:13 · 265 阅读 · 0 评论 -
GOlang 数据转化string 转int
#string到int int,err := strconv.Atoi(string) #string到int64 int64, err := strconv.ParseInt(string, 10, 64) //第二个参数为基数(2~36),//第三个参数位大小表示期望转换的结果类型,其值可以为0, 8, 16, 32和64,//分别对应 int, int8, int16, int32和int64#int到string string := strconv.Itoa(int)...原创 2020-10-14 09:20:49 · 1047 阅读 · 0 评论 -
golang string 转decimal
import "github.com/shopspring/decimal"String 转decimal:n, _ := decimal.NewFromString(Your String)decimal转string:n.String()原创 2020-10-10 16:01:16 · 3216 阅读 · 0 评论 -
golang xorm 映射名字不匹配导致查询的为0值
TransportData结构体内为:PickUpType int `json:"pickup_type"`数据库为pickup_type利用xorm映射err = dbMysql.SQL(sql).Find(&TransportData)解决方案:映射有强制的大小写规范:TransportData结构体改为:PickupType int `json:"pickup_type"`U改为小写...原创 2020-10-10 10:44:33 · 411 阅读 · 0 评论 -
Golang SELECT
select是go语言中常用的一个关键字,其用法也一直被用作面试题来考核应聘者。今天,结合代码来分析下select的主要用法。首先,我们来从官方文档看一下有关select的描述:A "select" statement chooses which of a set of possible send or receive operations will proceed. It looks similar to a "switch" statement but with the cases all r原创 2020-10-08 09:24:24 · 393 阅读 · 0 评论 -
Golang Json 序列化字符串换行输出写入文件 json.Indent
res, _ := client.Do(req)defer res.Body.Close()res_body, _ := ioutil.ReadAll(res.Body)fmt.Print(string(res_body))//res_body是post请求后的返回JSON字符串 见https://mp.youkuaiyun.com/console/editor/html/108704600/*Indent*/var out bytes.Buffererr := json.Indent(&o.原创 2020-09-21 10:47:24 · 2808 阅读 · 0 评论 -
Golang 讯飞接口 图片识别 导出
package mainimport ( "encoding/json" "encoding/base64" "crypto/md5" "io/ioutil" "io" "strconv" "time" "fmt" "net/http" "net/url" "strings" //"bufio" //缓存IO "os" "bytes")/**手写文字识别WebAPI接口调用示例接口文档(必看):https://do.原创 2020-09-21 10:46:36 · 963 阅读 · 0 评论 -
golang bind
func TopicUrl(f1 validator.FieldLevel) bool { return true //返回true表示验证成功}func main(){ router:=gin.Default() if v, ok := binding.Validator.Engine().(*validator.Validate); ok { //类型断言 v.RegisterValidation("topicurl", TopicUrl) //注册调用t...原创 2020-09-04 13:08:54 · 1323 阅读 · 0 评论 -
Mysql 根据经纬度计算距离
#关联查询当被关联表有指定条件时,会导致主表查询结果不正确select u.name,a.area,a.lat,a.lon,a.is_main,(st_distance (point (a.lat,a.lon),point(120.218405,30.251983) ) * 111195) AS distancefrom user uleft join addr a on a.user_id=u.idwhere a.is_main=1#建议使用select u.name,(select ro.原创 2020-09-03 10:03:14 · 298 阅读 · 0 评论 -
failed on the ‘datetime‘ tag (golang 时间原点 2006-01-02 15:04:05)
Go的时间格式必须以时间原点为格式化参数 而非YY-MM-DD-HH-MM-SSconst ( ANSIC = "Mon Jan _2 15:04:05 2006" UnixDate = "Mon Jan _2 15:04:05 MST 2006" RubyDate = "Mon Jan 02 15:04:05 -0700 2006" RFC822 = "02 Jan 06 15:04 MST" RFC822Z = "02...原创 2020-09-02 14:59:41 · 268 阅读 · 0 评论 -
Go 零值 和 空值
Go的基本类型bool //默认值为falsestring //默认值为空字符串int int8 int16 int32 int64 //默认值为0uint uint8 uint16 uint32 uint64 uintptr //默认值为0byte // uint8 的别名rune // int32 的别名float32 float64 //默认值为0complex64 complex128 //默认值为0...原创 2020-08-27 14:31:45 · 1287 阅读 · 0 评论 -
Golang sql 丢失react丢失数据
var info ProjectInfoResponsesql := `SELECT tp.project_pic from tb_project tp where tp.status=0 and tp.project_id=?`b, err := session.SQL(sql, request.ProjectId).Get(&info)原因:type ProjectInfoResponse struct { projectPic .原创 2020-08-20 14:39:54 · 195 阅读 · 0 评论 -
Go Xorm Sql Update操作(int型设置为0)
row, err := session.Cols("a").Update(request, models.m{UserId: request.UserId})a列要更改为int 0时,这样写,update第一个参数是更改的值,第二个参数是约束条件:// Update records, bean's non-empty fields are updated contents,// condiBean' non-empty filds are conditions// CAUTION:// .原创 2020-08-10 10:27:22 · 1284 阅读 · 0 评论 -
go数据库查询 scan error sql: Scan error on column index XXXXX unsupported Scan, storing driver.Value ...
var info []models.ab, err= session.SQL(sql, request.p, request.q).get(&c)解决法案:err= session.SQL(sql, request.p, request.q).find(&c)原创 2020-08-07 13:38:01 · 5553 阅读 · 0 评论 -
Go 中的面向对象
我们总结一下前面看到的:Go 没有类,而是松耦合的类型、方法对接口的实现。OO 语言最重要的三个方面分别是:封装,继承和多态,在 Go 中它们是怎样表现的呢? 封装(数据隐藏):和别的 OO 语言有 4 个或更多的访问层次相比,Go 把它简化为了 2 层(参见 4.2 节的可见性规则): 1)包范围内的:通过标识符首字母小写,对象只在它所在的包内可见 2)可导出的:通过标识符首字母大写,对象对所在包以外也可见 类型只拥有自己所在包中定义的方法。继承:用组合实现:内嵌一个(...原创 2020-08-04 16:52:50 · 152 阅读 · 0 评论 -
Golang Printf 和反射
Printf 和反射在 Go 语言的标准库中,前几节所述的反射的功能被大量地使用。举个例子,fmt 包中的 Printf(以及其他格式化输出函数)都会使用反射来分析它的...参数。Printf 的函数声明为:func Printf(format string, args ... interface{}) (n int, err error)Printf 中的...参数为空接口类型。Printf 使用反射包来解析这个参数列表。所以,Printf 能够知道它每个参数的类型。因此格式化...原创 2020-08-04 16:46:44 · 334 阅读 · 0 评论 -
Go 语言%#v
当定义了一个有很多方法的类型时,十之八九你会使用String()方法来定制类型的字符串形式的输出,换句话说:一种可阅读性和打印性的输出。如果类型定义了String()方法,它会被用在fmt.Printf()中生成默认的输出:等同于使用格式化描述符%v产生的输出。还有fmt.Print()和fmt.Println()也会自动使用String()方法。我们使用第 10.4 节中程序的类型来进行测试:示例 10.22 method_string.go:package ma...原创 2020-08-04 16:09:36 · 1784 阅读 · 0 评论 -
Go 函数和方法的区别
函数将变量作为参数:Function1(recv)方法在变量上被调用:recv.Method1()在接收者是指针时,方法可以改变接收者的值(或状态),这点函数也可以做到(当参数作为指针传递,即通过引用调用时,函数也可以改变参数的状态)。不要忘记 Method1 后边的括号 (),否则会引发编译器错误:method recv.Method1 is not an expression, must be called接收者必须有一个显式的名字,这个名字必须在方法中被使用。receiver_ty原创 2020-08-03 17:12:17 · 421 阅读 · 0 评论 -
Go map 和 struct vs new() 和 make()
new 和 make 这两个内置函数已经在第7.2.4节通过切片的例子说明过一次。现在为止我们已经见到了可以使用make()的三种类型中的其中两个:slices / maps / channels(见第 14 章)下面的例子说明了在映射上使用 new 和 make 的区别以及可能发生的错误:示例 10.4 new_make.go(不能编译)package maintype Foo map[string]stringtype Bar struct { thi...原创 2020-08-03 16:11:18 · 187 阅读 · 0 评论 -
GO语言实现简单登录注册修改密码+数据库mysql+GIN框架
MySQL设置:使用方法(带参数运行):源码下载:https://download.youkuaiyun.com/download/ScarletMeCarzy/12653994package mainimport ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" "strings" "os" "github.com/gin-gonic/gin")// 连接数据库参数const ( use.原创 2020-07-23 10:34:16 · 3199 阅读 · 0 评论 -
possible formatting directive
比如:fmt.Println("Hello, playground %d",i)那么会出现warning:Println call has possible formatting directive %d Go vet exited.fmt.Printlndoesn't do formatting things like%d. Instead, it uses the default format of its arguments, and adds spaces between t...原创 2020-07-22 14:06:54 · 833 阅读 · 0 评论 -
Go %T %v
package mainimport ( "fmt")type Power struct{ age int high int name string}func main() { var i Power = Power{age: 10, high: 178, name: "NewMan"} fmt.Printf("type:%T\n", i)...原创 2020-07-22 13:59:45 · 506 阅读 · 0 评论 -
Go语言字符类型(byte和rune)
字符串中的每一个元素叫做“字符”,在遍历或者单个获取字符串元素时可以获得字符。Go语言的字符有以下两种:一种是 uint8 类型,或者叫 byte 型,代表了 ASCII 码的一个字符。 另一种是 rune 类型,代表一个 UTF-8 字符,当需要处理中文、日文或者其他复合字符时,则需要用到 rune 类型。rune 类型等价于 int32 类型。byte 类型是 uint8 的别名,对于只占用 1 个字节的传统 ASCII 编码的字符来说,完全没有问题,例如 var ch byte = 'A'原创 2020-07-20 14:20:06 · 464 阅读 · 0 评论 -
Go语言的内置函数
内置函数Go 语言拥有一些不需要进行导入操作就可以使用的内置函数。它们有时可以针对不同的类型进行操作,例如:len、cap 和 append,或必须用于系统级的操作,例如:panic。因此,它们需要直接获得编译器的支持。以下是一个简单的列表,我们会在后面的章节中对它们进行逐个深入的讲解。名称 说明 close 用于管道通信 len、cap len 用于返回某个类型的长度或数量(字符串、数组、切片、map 和管道);cap 是容量的意思,用于返回某个类型的最大容量(只能用原创 2020-06-03 14:14:15 · 290 阅读 · 0 评论 -
Go语言调试(利用defer定位问题)
defer 和追踪关键字 defer 允许我们推迟到函数返回之前(或任意位置执行 return 语句之后)一刻才执行某个语句或函数(为什么要在返回之后才执行这些语句?因为 return 语句同样可以包含一些操作,而不是单纯地返回某个值)。关键字 defer 的用法类似于面向对象编程语言 Java 和 C# 的 finally 语句块,它一般用于释放某些已分配的资源。示例 6.8 defer.go:package mainimport "fmt"func main() { funct原创 2020-06-03 14:03:41 · 389 阅读 · 0 评论 -
Go语言传递变长参数
传递变长参数如果函数的最后一个参数是采用 ...type 的形式,那么这个函数就可以处理一个变长的参数,这个长度可以为 0,这样的函数称为变参函数。func myFunc(a, b, arg ...int) {}这个函数接受一个类似某个类型的 slice 的参数(详见第 7 章),该参数可以通过第 5.4.4 节中提到的 for 循环结构迭代。示例函数和调用:func Greeting(prefix string, who ...string)Greeting("hello:",原创 2020-06-03 13:52:28 · 822 阅读 · 0 评论 -
Go语言的LABLE标签与goto语句
标签与 gotofor、switch 或 select 语句都可以配合标签(label)形式的标识符使用,即某一行第一个以冒号(:)结尾的单词(gofmt 会将后续代码自动移至下一行)。示例 5.13 for6.go:(标签的名称是大小写敏感的,为了提升可读性,一般建议使用全部大写字母)package mainimport "fmt"func main() {LABEL1: for i := 0; i <= 5; i++ { for j := 0; j <=原创 2020-06-03 11:37:29 · 1495 阅读 · 0 评论 -
Go语言字符类型(byte和rune),for-range结构输出中文字符
字符串中的每一个元素叫做“字符”,在遍历或者单个获取字符串元素时可以获得字符。Go语言的字符有以下两种:一种是 uint8 类型,或者叫 byte 型,代表了 ASCII 码的一个字符。 另一种是 rune 类型,代表一个 UTF-8 字符,当需要处理中文、日文或者其他复合字符时,则需要用到 rune 类型。rune 类型等价于 int32 类型。byte 类型是 uint8 的别名,对于只占用 1 个字节的传统 ASCII 编码的字符来说,完全没有问题,例如 var ch byte = 'A'原创 2020-06-03 10:16:08 · 2549 阅读 · 1 评论 -
switch结构(GO语言)
switch 结构相比较 C 和 Java 等其它语言而言,Go 语言中的 switch 结构使用上更加灵活。它接受任意形式的表达式:switch var1 { case val1: ... case val2: ... default: ...}变量 var1 可以是任何类型,而 val1 和 val2 则可以是同类型的任意值。类型不被局限于常量或整数,但必须是相同的类型;或者最终结果为相同类型的表达式。前花括号 { 必须和 switch 关键字在同一行。您可以同时原创 2020-06-03 09:45:49 · 378 阅读 · 0 评论 -
指针(Go语言)
指针不像 Java 和 .NET,Go 语言为程序员提供了控制数据结构的指针的能力;但是,你不能进行指针运算。通过给予程序员基本内存布局,Go 语言允许你控制特定集合的数据结构、分配的数量以及内存访问模式,这些对构建运行良好的系统是非常重要的:指针对于性能的影响是不言而喻的,而如果你想要做的是系统编程、操作系统或者网络应用,指针更是不可或缺的一部分。由于各种原因,指针对于使用面向对象编程的现代程序员来说可能显得有些陌生,不过我们将会在这一小节对此进行解释,并在未来的章节中展开深入讨论。程序在内.原创 2020-06-02 21:37:26 · 283 阅读 · 0 评论 -
获取当前时间(GO语言)
时间和日期https://www.cntofu.com/book/14/eBook/04.8.mdtime 包为我们提供了一个数据类型 time.Time(作为值使用)以及显示和测量时间和日期的功能函数。当前时间可以使用 time.Now() 获取,或者使用 t.Day()、t.Minute() 等等来获取时间的一部分;你甚至可以自定义时间格式化字符串,例如: fmt.Printf("%02d.%02d.%4d\n", t.Day(), t.Month(), t.Year()) 将会输出 21.原创 2020-06-01 17:43:57 · 3655 阅读 · 0 评论 -
修剪字符串 分割字符串 字符串替换 判断字符串 s 是否以 prefix 开头(Go语言)
作为一种基本数据结构,每种语言都有一些对于字符串的预定义处理函数。Go 中使用 strings 包来完成对字符串的主要操作。4.7.1 前缀和后缀HasPrefix 判断字符串 s 是否以 prefix 开头:strings.HasPrefix(s, prefix string) boolHasSuffix 判断字符串 s 是否以 suffix 结尾:strings.HasSuffix(s, suffix string) bool示例 4.13 presuffix.go原创 2020-06-01 17:19:18 · 777 阅读 · 0 评论 -
Go语言的字符串浅析
字符串字符串是 UTF-8 字符的一个序列(当字符为 ASCII 码时则占用 1 个字节,其它字符根据需要占用 2-4 个字节)。UTF-8 是被广泛使用的编码格式,是文本文件的标准编码,其它包括 XML 和 JSON 在内,也都使用该编码。由于该编码对占用字节长度的不定性,Go 中的字符串也可能根据需要占用 1 至 4 个字节(示例见第 4.6 节),这与其它语言如 C++、Java 或者 Python 不同(Java 始终使用 2 个字节)。Go 这样做的好处是不仅减少了内存和硬盘空间占用,同时也不原创 2020-06-01 16:51:33 · 347 阅读 · 0 评论 -
Go语言的字符类型(byte/uint8)和 Unicode注意事项
字符类型严格来说,这并不是 Go 语言的一个类型,字符只是整数的特殊用例。byte 类型是 uint8 的别名,对于只占用 1 个字节的传统 ASCII 编码的字符来说,完全没有问题。例如:var ch byte = 'A';字符使用单引号括起来。在 ASCII 码表中,A 的值是 65,而使用 16 进制表示则为 41,所以下面的写法是等效的:var ch byte = 65 或 var ch byte = '\x41'(\x 总是紧跟着长度为 2 的 16 进制数)另外一种可能的原创 2020-06-01 16:47:44 · 1761 阅读 · 0 评论 -
位左移与 iota 计数配合(Go语言)
自增长在 golang 中,一个方便的习惯就是使用 iota 标示符,它简化了常量用于增长数字的定义,给以上相同的值以准确的分类。const ( CategoryBooks = iota // 0 CategoryHealth // 1 CategoryClothing // 2)位左移常见实现存储单位的用例使用位左移与 iota 计数配合可优雅地实现存储单位的常量枚举:type ByteSize float64const ( _原创 2020-06-01 16:26:05 · 323 阅读 · 0 评论 -
与操作系统架构无关的类型(int8 int16 int32 int64)Go语言
数字类型4.5.2.1 整型 int 和浮点型 floatGo 语言支持整型和浮点型数字,并且原生支持复数,其中位的运算采用补码(详情参见 二的补码 页面)。Go 也有基于架构的类型,例如:int、uint 和 uintptr。这些类型的长度都是根据运行程序所在的操作系统类型所决定的:int 和 uint 在 32 位操作系统上,它们均使用 32 位(4 个字节),在 64 位操作系统上,它们均使用 64 位(8 个字节)。 uintptr 的长度被设定为足够存放一个指针即可。Go原创 2020-06-01 16:08:23 · 661 阅读 · 0 评论 -
&& ||运算符右边的表达式将不会被执行的情形(GO语言)
在 Go 语言中,&& 和 || 是具有快捷性质的运算符,当运算符左边表达式的值已经能够决定整个表达式的值的时候(&& 左边的值为 false,|| 左边的值为 true),运算符右边的表达式将不会被执行。利用这个性质,如果你有多个条件判断,应当将计算过程较为复杂的表达式放在运算符的右侧以减少不必要的运算。利用括号同样可以升级某个表达式的运算优先级。在格式化输出时,你可以使用 %t 来表示你要输出的值为布尔型。布尔值(以及任何结果为布尔值的表达式)最常用在条件结构原创 2020-06-01 15:59:58 · 2180 阅读 · 0 评论 -
Go语言的 值类型和引用类型(垃圾回收)
值类型和引用类型程序中所用到的内存在计算机中使用一堆箱子来表示(这也是人们在讲解它的时候的画法),这些箱子被称为 “ 字 ”。根据不同的处理器以及操作系统类型,所有的字都具有 32 位(4 字节)或 64 位(8 字节)的相同长度;所有的字都使用相关的内存地址来进行表示(以十六进制数表示)。所有像 int、float、bool 和 string 这些基本类型都属于值类型,使用这些类型的变量直接指向存在内存中的值:另外,像数组(第 7 章)和结构(第 10 章)这些复合类型也是值类型。当使原创 2020-06-01 15:15:32 · 332 阅读 · 0 评论 -
CSP(communicating sequential processes)并发模型
https://segmentfault.com/a/1190000018150987请记住下面这句话:DO NOT COMMUNICATE BY SHARING MEMORY; INSTEAD, SHARE MEMORY BY COMMUNICATING.“不要以共享内存的方式来通信,相反,要通过通信来共享内存。”普通的线程并发模型,就是像Java、C++、或者Python,他们线程间通信都是通过共享内存的方式来进行的。非常典型的方式就是,在访问共享数据(例如数组、Map、或者某个结构体或对象原创 2020-05-30 22:25:04 · 5450 阅读 · 0 评论 -
Go入门(常用资源 教程 链接)
Go安装:(win64)https://golang.org/doc/install?download=go1.14.3.windows-amd64.msiGo社区学习:https://github.com/studygolang/studygolang原创 2020-05-30 15:37:03 · 490 阅读 · 0 评论