Go语言中文网 为您找到相关结果 303

设计模式-03-生成器模式

生成器模式概述生成器模式将一个复杂对象的构建和它的表示分离,使得同样的构建过程可以创建不同的表示。生成器模式的主要功能是构建复杂的产品,而且是细化地、分步骤地构建产品,也就是说生成器模式重在一步一步解决构建复杂对象的问题。 实现使用文件的导出来实现生成器模式。文件的导出有普通文本和xml等文件格式。生成器作为一个接口,不同的具体生成器具体实现接口的方法。还有一个指导者负责整体构建的算法部分,是相对不变的部分。 总结与分析生成器模式构建对象的过程是统一的、固定不变的,变化的部分放到生成器部分了,只要配置不同的生成器,那么同样的构建过程,就能构建出不同的产品来。生成器模式的重心在于分离构建方法和具体的构造实现,从而使得构建算法可以重用。具体的构造实现可以很方便地扩展和切换,从而可以灵活地组合来构...阅读全文

博文 2019-04-10 20:34:40 疯狂的卡卡

golang结构体json的时间格式化解决方案

使用了OSC这么久了还没有写一篇博文,真实惭愧!在次写下第一篇。 最近开发项目时候发现一个结构体的Json转换的时间格式问题。 即这种1993-01-01T20:08:23.000000028+08:00 这种表示UTC方法。从我们习惯来说,更喜欢希望的是 1993-01-01 20:08:23这种格式。 重新复现代码如下: package main import ( "time" "encoding/json" ) type Student struct { Name string `json:"name"` Brith time.Time `json:"brith"` } func main() { stu:=Student{ Name:"qiangmzsx", Brith:time.D...阅读全文

博文 2017-09-12 03:52:51 梦朝思夕

总结

在昨天的面试中,自己需要总结很多问题,以前一直怕面试,因为面试会问答很多以前都没怎么注意到的问题,常常面试了几次,拿到了一个差不多的工作,就停止面试了,这是一个死循环。现在清楚了一定时刻保持面试的状态,原因如下:1. 很多面试知识只在面试的时候被问到,在实际工作中只会用到一小部分。2. 要明白市场现在有什么类型的需求,需求量大不大 面试其实是一个策略,很多时候就是隐藏自己的劣势,发挥自己的优势。如何发挥自己优势呢?其实就是要结合面试官的问题,举一反三,把自己掌握的内容引出来,而不是仅仅回答面试官的问题,面试官并不是想用单一的问题难倒你,只是想了解实际知识的掌握情况,对问题深不深入,有没有实际经验。 接下来,需要各个方面都加强,对之前一些模拟两可的知识进行梳理,要达到熟练的程度,面对面试的问题...阅读全文

博文 2019-06-21 16:02:43 radial_light

go语言学习

自己名义上是在搜索部门,但主要做的是文本相关的工作。所以想自己如果说自己不会搜索,也挺尴尬的。于是找了一个叫wukong搜索的搜索引擎,打算学习一下。wukong搜索是用go语言写成的,所以正好学习下这门google的语言,然后顺便学习下wukong搜索,也算是一举两得。 本系列会主要写一些go语言学习相关的知识点,主要是一些跟其他语言(例如c,python)不同的点,会单独列出来。主要内容会基于go语言编程这本书来做学习,相关的代码会放到github上。 最后会对wukong搜索做一个比较详细的解释。 $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('...阅读全文

博文 2016-09-07 03:00:57 kamendula

golang自定义sort及延展知识?

golang自定义sort及延展知识? 背景介绍 初来乍到 刚入门golang的时候,总是不知道怎么才能实现自定义类型的排序。 这几天看leader面试别人,时不时也会问到排序的问题,看来还是很重要的。 这篇小文章,一起小结下自定义类型的排序问题。 本文摘要 自定义排序的实现; 先按A规则排序再按B规则排序的实现技巧; 三剑客原理回顾; 问题引入 如何对下面的personArr实现先按Height排序、再按Age排序呢? type Person struct { Name string Age int Height int } personArr := make([]Person, 0) 三剑客 初识三剑客 最通用的是下面这个函数: sort.Sort(data) 跳转到该函数的实现: fu...阅读全文

博文 2019-12-22 08:32:47 竹一先生_阳明学子

将文件嵌入go代码,你的可执行程序可以携带其他文件了

```go package main import ( "compress/zlib" "fmt" "io" "log" "os" "path/filepath" ) func main() { type fileInfo struct { file string size int64 } fileList := make(map[string]fileInfo, len(os.Args)) for _, v := range os.Args[1:] { if f, err := os.Stat(v); err == nil || os.IsExist(err) { fileList[filepath.Base(v)] = fileInfo{file: v, size: f.Size()} ...阅读全文

博文 2019-10-09 10:31:50 jan-bar

Go 中的循环是如何转为汇编的?

![Illustration created for “A Journey With Go”, made from the original Go Gopher, created by Renee French.](https://raw.githubusercontent.com/studygolang/gctt-images2/master/20200201-how-are-loops/cover.png) *本文基于 Go 1.13 版本* 循环在编程中是一个重要的概念,且易于上手。但是,循环必须被翻译成计算机能理解的底层指令。它的编译方式也会在一定程度上影响到标准库中的其他组件。让我们开始分析循环吧。 ## 循环的汇编代码 使用循坏迭代 `array`,`slice`,`channe...阅读全文

博文 2020-05-05 20:02:21 Jun10ng

Go语言学习笔记 - 表达式

Golang关键字 break case chan const continus default defer else fallthrough for func go goto if import interface map package range return select struct switch type var Goang运算符 不支支持运算符重载。尤其需要注意,"++"、"--" 是语句而而非非表达式。 + & += &= && == != ( ) - | -= |= || < <= [ ] * ^ *= ^= <- > >= { } / << /= <<= ++ = := , ; % >> %= >>= -- ! ... . : &^ &^= 控制流 x := 0 if n...阅读全文

博文 2017-02-10 15:53:33 技术学习

golang 流程控制

Go语言的流程控制主要分为三大类:1. 条件判断 2. 循环控制 3. 无条件跳转条件判断Go语言的条件判断由if ... else if ... else 语句实现,条件表达式值必须是布尔类型,可省略圆括号,但是花括号不能省略且左花括号不能另起一行,比如:if 7%2 == 0 { fmt.Println("7 is even") } else { fmt.Println("7 is odd") } if 8%4 == 0 { //可以没有else只有if语句 fmt.Println("8 is divisible by 4") }Go语言比较特别的是在条件判读语句中支持初始化语句,允许定义局部变量,但是这个变量的作用域仅限于该条件逻辑块内,比如:if num := 9; num < 0 ...阅读全文

博文 2017-02-10 10:23:03 100018

go plan 9汇编

本文将简单介绍一下go语言的汇编。 主要的内容如下: plan 9 是什么?为什么学习plan9? plan9 的常见指令 go程序如何转换为plan9 ? 下面就开始简单介绍一下。 plan 9 是什么?为什么学习plan9? plan9, Go一套自己的汇编。按照官方文档的说法,其设计初衷是解决跨平台的问题,但是没有做好。并且它不同于传统的汇编,也就是说要想学习go汇编,你需要重新学习一套语法。社区在争论这个问题,有人说是因为go的几个大佬,原来是用plan9的。这个问题咱们这儿不讨论。 那作为普通人,我们学汇编干啥呢? 装逼!这是第一生产力!我一直有一个不成熟的想法,希望自己能够像机器一样看穿代码的运行。有时想想,也挺可笑的。 除了装逼,真的一点用处都没有了吗? 当然不是!!! 说下我...阅读全文

博文 2019-07-17 00:32:41 17freedom

go语言学习

自己名义上是在搜索部门,但主要做的是文本相关的工作。所以想自己如果说自己不会搜索,也挺尴尬的。于是找了一个叫wukong搜索的搜索引擎,打算学习一下。wukong搜索是用go语言写成的,所以正好学习下这门google的语言,然后顺便学习下wukong搜索,也算是一举两得。 本系列会主要写一些go语言学习相关的知识点,主要是一些跟其他语言(例如c,python)不同的点,会单独列出来。主要内容会基于go语言编程这本书来做学习,相关的代码会放到github上。 最后会对wukong搜索做一个比较详细的解释。 $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('...阅读全文

博文 2016-09-06 17:00:07 kamendula

godef的一个bug

godef可以打印出Go源代码中的符号,很多集成开发工具都集成了它,并且提供了Go to Definition的命令和快捷键,可以迅速的跳转到方法和变量的声明的地方,非常的方便。 比如我常用的vscode-go,就提供了这样的功能,但是目前godef有一个bug,就是不能跳转标准库net包下的方法定义,这个bug已经提交到github上: #18, 大约在6月的时候就发现了这个bug,不清楚作者为什么没有fix,事实上早有人提供了修改的pull request。这个bug产生的原因是godef没有处理好"C"库。 我在这里把修改方法记录一下,你可以手工的修改编译godef。 找到godef文件夹下的parser文件(go/parser/parser.go),在 1970行增加一个判断。 12...阅读全文

博文 2017-02-08 12:53:42 smallnest

golang IIS ulr重写 跳转不到其他域名

使用IIS url重写后,入站规则是访问80端口的变为8080端口的。 比如访问www.aaa.com时会自动访问到www.aaa.com:8080 但是当做到微信登录授权时,跳转不到微信的登录授权页面。 后台用go的 302跳转 访问www.aaa.com时让他跳转到www.openAAA.com时跳转不到。 请问有什么解决方法吗 ...阅读全文

Golang学习笔记4——控制语句

1.基础知识补充(指针、递增递减语句) 指针 go虽然保留了指针,但是与其它编程语言不同的是,在go当中不支持指针运算以及"->"运算符,而直接采用"." 选择符来操作指针目标对象的成员 操作符"&"取变量地址,使用"*"通过指针间接访问目标对象 默认值为nil而非null 在go中,++与--是作为语句而并不是作为表达式 a := 1 a++ //但不能这样:a := a++,只能作为单独的语句独占一行 2.if判断语句 条件表达式没有括号 支持一个初始化表达式(可以是并行方式) 左大括号必须和条件语句或else在同一行 支持单行模式 初始化语句中的变量为block级别,同时隐藏外部同名变量 func main(){ a := 10 if a:=1 { fmt.Println(a) } f...阅读全文

博文 2017-10-24 16:00:01 marks-gui

go语言学习

自己名义上是在搜索部门,但主要做的是文本相关的工作。所以想自己如果说自己不会搜索,也挺尴尬的。于是找了一个叫wukong搜索的搜索引擎,打算学习一下。wukong搜索是用go语言写成的,所以正好学习下这门google的语言,然后顺便学习下wukong搜索,也算是一举两得。 本系列会主要写一些go语言学习相关的知识点,主要是一些跟其他语言(例如c,python)不同的点,会单独列出来。主要内容会基于go语言编程这本书来做学习,相关的代码会放到github上。 最后会对wukong搜索做一个比较详细的解释。 $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('...阅读全文

博文 2016-09-07 01:00:33 kamendula

go语言学习

自己名义上是在搜索部门,但主要做的是文本相关的工作。所以想自己如果说自己不会搜索,也挺尴尬的。于是找了一个叫wukong搜索的搜索引擎,打算学习一下。wukong搜索是用go语言写成的,所以正好学习下这门google的语言,然后顺便学习下wukong搜索,也算是一举两得。 本系列会主要写一些go语言学习相关的知识点,主要是一些跟其他语言(例如c,python)不同的点,会单独列出来。主要内容会基于go语言编程这本书来做学习,相关的代码会放到github上。 最后会对wukong搜索做一个比较详细的解释。 $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('...阅读全文

博文 2016-09-08 08:01:20 kamendula

golang源码学习之panic

这里会涉及到一些defer的知识,有兴趣可以看我的另一篇关于defer的文章 https://www.jianshu.com/p/fec11caadaf6 数据结构 //runtime/runtime2.go type _panic struct { // 调用defer时入参的指针 argp unsafe.Pointer // pointer to arguments of deferred call run during panic; cannot move - known to liblink // panic 的参数 arg interface{} // argument to panic // 指向更早的panic, 新的panic添加到链表头 link *_panic // li...阅读全文

博文 2019-07-23 18:03:26 ihornet

Go语言基础:if,goto,for,switch

Go的if,for,switch跟C的区别 有过C基础的人,都知道if、for、switch的条件语言都是有括号的。基本格式: if(条件判断语言) {} for(语句1;语句2;语句3) {} switch(语句){} 在go中,这些语法规则跟C还是有差别,概括为一句话就是去掉了括号。语法规则如下: if 语句 {} for 语句1;语句2;语句3 {}//跟C一样,这三个语句可以省掉任何一个语句 switch 语句 {} 区别其实很简单。正由于没有了括号,导致他们与C有了更多的功能。 if if 还有一个强大的地方就是条件判断语句里面允许声明一个变量,这个变量的作用域只能在该条件逻辑块内,其他地方就不起作用了。 if x:=getXdata(); x>10 { //x的作用域只在这个括号...阅读全文

博文 2016-09-07 01:00:00 uudou

go语言学习

自己名义上是在搜索部门,但主要做的是文本相关的工作。所以想自己如果说自己不会搜索,也挺尴尬的。于是找了一个叫wukong搜索的搜索引擎,打算学习一下。wukong搜索是用go语言写成的,所以正好学习下这门google的语言,然后顺便学习下wukong搜索,也算是一举两得。 本系列会主要写一些go语言学习相关的知识点,主要是一些跟其他语言(例如c,python)不同的点,会单独列出来。主要内容会基于go语言编程这本书来做学习,相关的代码会放到github上。 最后会对wukong搜索做一个比较详细的解释。 $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('...阅读全文

博文 2016-09-06 20:00:01 kamendula

Kali2.0 update到最新版本后安装shadowsocks服务报错问题

本文适用于解决openssl升级到1.1.0以上版本,导致shadowsocks2.8.2启动报undefined symbol: EVP_CIPHER_CTX_cleanup错误。最近将kali升级到了最新版本,编译之后shadowsocks无法启动,报错如下:INFO: loading config from ss.json 2016-12-14 22:47:50 INFO loading libcrypto from libcrypto.so.1.1 Traceback (most recent call last): File “/usr/local/bin/sslocal”, line 11, in sys.exit(main()) File “/usr/local/lib/pyt...阅读全文

博文 2019-02-28 13:02:51 Dende

Golang学习摘录二:控制语句

if语句 i f x > 0 { // {是强制的,且必须和if在同一行 return y } else { return x } if 和 switch 接受初始化语句,通常用于设置一个(局部)变量。 if err := Chmod(0664); err != nil { //nil 与 C 的 NULL 类似 fmt.Printf(err) //err 的作用域被限定在 if 内 return err } goto语句 用 goto 跳转到一定是当前函数内定义的标签 func myfunc() { i := 0 Here: // 这行的第一个词,以分号结束作为标签,标签名区分大小写 println(i) i++ goto Here // 跳转 } for语句 Go 的 for 循环有三种...阅读全文

博文 2017-02-23 02:49:40 ma772528138

vim-go ctrl+] 自动跳转失败处理 安装gure

安装vim-go后,使用 ctrl+] 自动跳转方法时会提示以下错误 就是gure没有安装嘛,安装一下即可。首先嘛按照提示在vim执行:GoInstallBinaries。然后你会发现并没有什么用,自动安装了一大堆东西基本都是安装失败的。 然后google搜索安装guru。 go get golang.org/x/tools/cmd/guru go build golang.org/x/tools/cmd/guru mv guru $GOPATH/bin 然而也并没什么用。第一步就提示超时,安装不上 接着找,直接去golang拉源码进行安装。 mkdir -p $GOPATH/src/golang/x cd $GOPATH/src/golang/x git clone https://git...阅读全文

博文 2019-02-03 12:34:44 theache

go语言学习

自己名义上是在搜索部门,但主要做的是文本相关的工作。所以想自己如果说自己不会搜索,也挺尴尬的。于是找了一个叫wukong搜索的搜索引擎,打算学习一下。wukong搜索是用go语言写成的,所以正好学习下这门google的语言,然后顺便学习下wukong搜索,也算是一举两得。 本系列会主要写一些go语言学习相关的知识点,主要是一些跟其他语言(例如c,python)不同的点,会单独列出来。主要内容会基于go语言编程这本书来做学习,相关的代码会放到github上。 最后会对wukong搜索做一个比较详细的解释。 $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('...阅读全文

博文 2016-09-06 17:00:21 kamendula

go语言学习

自己名义上是在搜索部门,但主要做的是文本相关的工作。所以想自己如果说自己不会搜索,也挺尴尬的。于是找了一个叫wukong搜索的搜索引擎,打算学习一下。wukong搜索是用go语言写成的,所以正好学习下这门google的语言,然后顺便学习下wukong搜索,也算是一举两得。 本系列会主要写一些go语言学习相关的知识点,主要是一些跟其他语言(例如c,python)不同的点,会单独列出来。主要内容会基于go语言编程这本书来做学习,相关的代码会放到github上。 最后会对wukong搜索做一个比较详细的解释。 $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('...阅读全文

博文 2016-09-06 19:00:01 kamendula

GO语言————5.6 标签与goto

5.6 标签与 gotofor、switch 或 select 语句都可以配合标签(label)形式的标识符使用,即某一行第一个以冒号(:)结尾的单词(gofmt 会将后续代码自动移至下一行)。示例 5.13 for6.go:(标签的名称是大小写敏感的,为了提升可读性,一般建议使用全部大写字母)package main import "fmt" func main() { LABEL1: for i := 0; i <= 5; i++ { for j := 0; j <= 5; j++ { if j == 4 { continue LABEL1 } fmt.Printf("i is: %d, and j is: %d\n", i, j) } } }本例中,continue 语句指向 LABE...阅读全文

博文 2019-01-30 12:31:03 Fly_hps

go语言学习

自己名义上是在搜索部门,但主要做的是文本相关的工作。所以想自己如果说自己不会搜索,也挺尴尬的。于是找了一个叫wukong搜索的搜索引擎,打算学习一下。wukong搜索是用go语言写成的,所以正好学习下这门google的语言,然后顺便学习下wukong搜索,也算是一举两得。 本系列会主要写一些go语言学习相关的知识点,主要是一些跟其他语言(例如c,python)不同的点,会单独列出来。主要内容会基于go语言编程这本书来做学习,相关的代码会放到github上。 最后会对wukong搜索做一个比较详细的解释。 $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('...阅读全文

博文 2016-09-07 02:00:01 kamendula

go语言学习

自己名义上是在搜索部门,但主要做的是文本相关的工作。所以想自己如果说自己不会搜索,也挺尴尬的。于是找了一个叫wukong搜索的搜索引擎,打算学习一下。wukong搜索是用go语言写成的,所以正好学习下这门google的语言,然后顺便学习下wukong搜索,也算是一举两得。 本系列会主要写一些go语言学习相关的知识点,主要是一些跟其他语言(例如c,python)不同的点,会单独列出来。主要内容会基于go语言编程这本书来做学习,相关的代码会放到github上。 最后会对wukong搜索做一个比较详细的解释。 $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('...阅读全文

博文 2016-09-06 18:00:24 kamendula

Go语言中的控制语句

// code_004_process_control project main.go package main import ( "fmt" "time" ) func main() { //if语句 if a := 3; a > 3 { fmt.Println("a >3") } else if a == 3 { fmt.Println("a==3") } else { fmt.Println("error") } fmt.Println("\n============\n") //switch语句1 switch score := 90; score { case 80, 90, 100: fmt.Println("优秀") case 50, 60, 70: fmt.Println("...阅读全文

博文 2018-10-04 00:35:09 ck_god

11. Go 语言流程控制:goto 无条件跳

Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:http://golang.iswbm.com我的 Github:github.com/iswbm/GolangCodingTime Go里的流程控制方法还是挺丰富,整理了下有如下这么多种: if - else 条件语句 switch - case 选择语句 for - range 循环语句 goto 无条件跳转语句 defer 延迟执行 前面三种,我已经都讲过了,今天要讲讲 goto 的无条件跳转。 很难想象在...阅读全文

博文 2020-05-06 08:32:38 Python编程时光

golang学习(3):go的流程和函数

一、流程控制 if 和其他语言没什么区别,只是判断语句不加括号,比如: if integer := 5; integer == 3 { fmt.Println("The integer is equal to 3") } else if integer < 3 { fmt.Println("The integer is less than 3") } else { fmt.Println("The integer is greater than 3") } goto 这个就神奇了,用goto跳转到必须在当前函数内定义的标签,上代码比较好: i := 5 here: i++ fmt.Println(i) if i < 10 { goto here } else { goto there } f...阅读全文

博文 2018-10-24 23:34:42 鲨鱼巨人

【译】Go工具要点

你是刚开始使用Go工具么?或者你想扩展知识?这篇文章将会描述每个人都需要知道的Go工具参数。 免责声明:这篇文章可能会有些偏见。这篇文章描述了我个人会用到的Go工具参数,还有一些是我周围的人遇到的问题。如果你还有别的想法,在Twitter联系我。 $ go build -x -x会列出来go build调用到的所有命令。 如果你对Go的工具链好奇,或者使用了一个跨C编译器,并且想知道调用外部编译器用到的具体参数,或者怀疑链接器有bug;使用-x来查看所有调用。 $ go build -x WORK=/var/folders/00/1b8h8000h01000cxqpysvccm005d21/T/go-build600909754 mkdir -p $WORK/hello/perf/_obj/...阅读全文

8. Go 语言流程控制:if-else

Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:http://golang.iswbm.com我的 Github:github.com/iswbm/GolangCodingTime 1. 条件语句模型 Go里的流程控制方法还是挺丰富,整理了下有如下这么多种: if - else 条件语句 switch - case 选择语句 for - range 循环语句 goto 无条件跳转语句 defer 延迟执行 今天先来讲讲 if-else 条件语句 Go 里的条件...阅读全文

博文 2020-04-30 08:32:41 Python编程时光

go拾遗

最近要做易用性完善写go的SDK,于是查了查go doc,发现自己写了两年半的go了,才发现godoc这一片净土。 本机通过浏览器查看go文档: $godoc -http=:6060 本地GOPATH/bin下的文件都有列出来,于是没按标准写的包看起来太不专业了。话说Go的固定格式省去了很多纠结的时间。Go文档大全 $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('

    ').addClass('pre-numbering').hide(); $(this).addClass('has...阅读全文

博文 2017-10-21 12:01:03 Planet_X

leetcode --- 三步问题(DP)

三步问题 leetcode-golang 问题 有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶或3阶。实现一种方法,计算小孩有多少种上楼梯的方式。结果可能很大,你需要对结果模1000000007。 示例1: 输入:n = 3 输出:4 说明: 有四种走法 示例2: 输入:n = 5 输出:13 提示: n范围在[1, 1000000]之间 解题思路 分析:设跳到i阶的方式有dp[i]种方式,那么跳往dp[i]的所有情况为 第 i-3 阶跳 3 阶,dp[i-3]种方式 第 i-2 阶跳 2 阶,dp[i-2]种方式 第 i-1 阶跳 1 阶,dp[i-1]种方式 dp[i] = dp[i-3] + dp[i-2] + dp[i-3] 疑问:为什么 i-3 阶跳到 i-2 阶不算...阅读全文

博文 2020-03-17 23:32:45 laijh

基于Go博客wblog的理解和修改。

初衷 ​ 自学Go语言已经一段时间,想通过博客更深入理解go语言。最终通过Gin语言定位了wblog博客框架。wblog是基于基于gin+gorm开发的个人博客项目。 ​ 学习别人的博客是一个抓狂的过程,不仅要疯狂学习扩展的知识,比如gin框架,gorm,还要理解原作者的思想和构建过程。 ​ 原项目仅做了简单的英文注释。我则根据原项目增添了很多自己理解的注释和说明,方便其他后来人学习参考。同时更新原项目依赖,可以一键运行。 修改 增加了中文注释,更多的是我对原项目的理解,方便其他人理解和学习。 使用go module替代了govendor依赖管理包,更方便目前的运行方式。 更新了代码中的依赖包,比如session中的代码。 将默认使用的数据库修改为Mysql。并将时间格式设置为charset...阅读全文

博文 2020-02-06 17:33:19 moakia

golang循环跳转语句

golang循环跳转语句 跳转语句 goto break continue 三个语法都可以配合标签使用 标签名区分大小写,若不使用会造成编译错误 break与continue配合标签可用于多层循环的跳出 goto是调整执行位置,与其他2个语句配合标签使用的结果不同 break func main() { LABEL1: for { for i := 0; i < 10; i++ { if i > 3 { fmt.Println(i) break LABEL1 } } } fmt.Println("执行结束") } 输出结果 API server listening at: 127.0.0.1:5587 4 执行结束 Process exiting with code: 0 添加LABEL1标...阅读全文

博文 2019-07-30 03:32:39 iXiAo9

golang基础--控制语句

go基础之控制语句 补充知识 指针 与其他语言不同,在Go中不支持指针运算即->运算符,而直接采用.选择符来操作指针目标对象的成员。 操作符&取变量的地址,使用*通过指针间间接访问目标对象 默认值位nil,而非NULL 实例代码如下 //指针的使用 package main import "fmt" func main() { a := 1 //定义一个变量,类型位int a++ //必须单独放一行 var p *int = &a // 指针p指向a的内存地址 fmt.Println(p) //访问p fmt.Println(*p) //取p内存地址指向的值 } 运行结果 shell 0xc04200e0b8 //内存地址 2 //地址指向的值 判断if控制语句 条件表达式没有括号 支持一个...阅读全文

博文 2018-07-12 13:30:39 failymao

[LeetCode By Go 29]492. Construct the Rectangle

马上写了30道题目了,使用golang写起题目来代码简洁明了,还可以非常方便的写测试用例,加上Goland可以进行调试,有如神助。 但无论如何,写了测试就会依赖测试判断对错,用了debug就会依赖debug来寻找出错的地方,这些其实都是自己大脑偷懒把压力推到了测试和工具上,在日常开发上可以这样提高代码质量和工作效率,但是在笔试面试时基本上不会用编译器调试代码,更别说写测试用例了。 因此,之后如果能直接把题目解出来,就不写测试用例了,我也省(写)时(烦)间(啦)嘛。 题目 For a web developer, it is very important to know how to design a web page's size. So, given a specific rectangu...阅读全文

博文 2017-08-20 10:05:06 miltonsun

Golang学习笔记4——控制语句

1.基础知识补充(指针、递增递减语句) 指针 go虽然保留了指针,但是与其它编程语言不同的是,在go当中不支持指针运算以及"->"运算符,而直接采用"." 选择符来操作指针目标对象的成员 操作符"&"取变量地址,使用"*"通过指针间接访问目标对象 默认值为nil而非null 在go中,++与--是作为语句而并不是作为表达式 a := 1 a++ //但不能这样:a := a++,只能作为单独的语句独占一行 2.if判断语句 条件表达式没有括号 支持一个初始化表达式(可以是并行方式) 左大括号必须和条件语句或else在同一行 支持单行模式 初始化语句中的变量为block级别,同时隐藏外部同名变量 func main(){ a := 10 if a:=1 { fmt.Println(a) } f...阅读全文

博文 2017-10-22 09:04:44 MarksGui

Go语言实战笔记(三)| Go Doc 文档

《Go语言实战》读书笔记,未完待续,欢迎关注公众号flysnow_org,第一时间看后续笔记。 对于协作开发或者代码共享来说,文档是一个可以帮助开发者快速了解以及使用这些代码的一个教程,文档越全面,越详细,入门越快,效率也会更高。 在Go语言中,Go为我们提供了快速生成文档以及查看文档的工具,让我们可以很容易的编写查看文档。 Go提供了两种查看文档的方式,一种是使用go doc命令在终端查看,这种适用于使用VIM等工具在终端开发的人员,它们不用离开终端,既可以查看想查看的文档,又可以编码。 第二种方式,是使用浏览器查看的方式,通过godoc命令可以在本机启动一个web服务,我们可以通过打开浏览器,访问这个服务来查看我们的Go文档。 从终端查看文档这种方式适用于在终端开发的,它们一般不像离开终...阅读全文

博文 2017-07-04 02:18:15 飞雪无情

ECS控制台实例搜索的优化与改进

摘要: 搜索功能是控制台非常重要的功能,承载着实例管理入口的作用,应该好用,快速和准确。然而,ECS控制台实例列表的搜索功能经常被吐槽不好用,痛点主要有以下三点: 每次搜索之前需要选择搜索类型,非常繁琐。 过滤条件太多了, 搜索框,tag,表格过滤,高级搜索,搜索条件不统一 不支持模糊搜索 从已知的这些问题出发,ECS控制台将对搜索功能,以及整个实例管理的用户体验部分做长期的优化和改进。 搜索功能是控制台非常重要的功能,承载着实例管理入口的作用,应该好用,快速和准确。然而,ECS控制台实例列表的搜索功能经常被吐槽不好用,痛点主要有以下三点: 1.每次搜索之前需要选择搜索类型,非常繁琐。 2.过滤条件太多了, 搜索框,tag,表格过滤,高级搜索,搜索条件不统一 3.不支持模糊搜...阅读全文

数据结构之跳表

跳表 前言 文中附代码实现. 在公众号回复 【跳表】 也可以获取哦。 什么是跳表 跳表是一种数据结构。它允许快速查询一个有序连续元素的数据链表。跳跃列表的平均查找和插入时间复杂度都是O(log n),优于普通队列的O(n)。 from. 维基百科 引题 线性表这种数据有两种具体实现, 数组和链表。具体的内容之前的文章里也有说过,可以翻翻看哇~。在这里两种数据结构中,数组的优点是查找速度快,而链表的优点是增删的效率高,这也是我们常说的。其实,非也。 数组是一种内存连续的数据结构,其优点是可以通过首地址+N*(sizeOf(Node)) 来快速获取指定位置上的元素.假如我们不知道指定元素的位置呢? 链表是一种非内存连续的数据,其优点是通过改变指针地址来快速增减元素。很明显的问题,你首先要知道你要...阅读全文

博文 2020-01-06 23:32:47 方小白_

09-GoLang流程控制

选择结构if C语言中有三目运算符 ?: Go语言中没有,所有用三目解决的问题使用 if-else 来解决 C语言中的if选择结构有三种格式 格式一: if(条件表达式){ 被控制的语句; } 格式二: if(条件表达式){ 被控制的语句; }else{ 被控制的语句; } 格式三: if(条件表达式){ 被控制的语句; }else if(条件表达式){ 被控制的语句; }else{ 被控制的语句; } Go语言中的if选择结构也有三种格式, 并且和C语言中的格式类似 格式一: if 初始化表达式;条件表达式 { 被控制的语句; } // 注意点: 如果将变量定义到if的初始化表达式中, 那么变量只能在if结构中使用 // 这样做的目的是为了提升性能, 如果变量只在选择结构中使用, //那么...阅读全文

博文 2018-10-10 13:34:39 箩篼

【Go学习笔记】 5、控制语句

指针 Go虽然保留了指针,但与其他编程语言不同的是,在Go当中不支持指针运算以及“->”运算符,而直接采用“.”选择符来操作指针目标对象的成员 操作符 “&”取变量地址,使用“ * ” 通过指针间接访问目标对象 默认值为nil而非NULL 递增递减语句 在Go当中,++与– 是作为语句而并不是作为表达式。 选择语句switch 可以使用任何类型或表达式作为条件语句 不需要写break,一旦条件符合自动终止 如希望继续执行下一个case,需使用fallthrough语句 支持一个初始化表达式(可以是并行方式),右侧需跟分好 左大括号必须和条件语句在同一行 12345678910111213141516171819202122232425262728293031323334353637 func...阅读全文

博文 2017-05-30 05:09:42 HundredLee

golang结构体json的时间格式化解决方案

最近开发项目时候发现一个结构体的Json转换的时间格式问题。即这种1993-01-01T20:08:23.000000028+08:00 这种表示UTC方法。从我们习惯来说,更喜欢希望的是1993-01-01 20:08:23这种格式。重新复现代码如下:package main import ( "time" "encoding/json" ) type Student struct { Name string `json:"name"` Brith time.Time `json:"brith"` } func main() { stu:=Student{ Name:"qiangmzsx", Brith:time.Date(1993, 1, 1, 20, 8, 23, 28, time.L...阅读全文

博文 2018-07-02 12:19:04 梦朝思夕

Leetcode Python超琐碎笔记: 617. Merge Two Binary Trees

问题地址,难度:Easy 若有错误之处请予以指正:) 问题描述 Given two binary trees and imagine that when you put one of them to cover the other, some nodes of the two trees are overlapped while the others are not. You need to merge them into a new binary tree. The merge rule is that if two nodes overlap, then sum node values up as the new value of the merged node. Otherwise, ...阅读全文

博文 2018-10-28 13:34:45 simoncos

一些不常见的Go命令参数详解

你是刚开始使用Go工具么?或者你想扩展知识?这篇文章将会描述每个人都需要知道的Go工具参数。免责声明:这篇文章可能会有些偏见。这篇文章描述了我个人会用到的Go工具参数,还有一些是我周围的人遇到的问题。如果你还有别的想法,在Twitter联系我。$ go build -x-x会列出来go build调用到的所有命令。如果你对Go的工具链好奇,或者使用了一个跨C编译器,并且想知道调用外部编译器用到的具体参数,或者怀疑链接器有bug;使用-x来查看所有调用。$ go build -x WORK=/var/folders/00/1b8h8000h01000cxqpysvccm005d21/T/go-build600909754 mkdir -p $WORK/hello/perf/_obj/ mkdi...阅读全文

博文 2019-03-17 14:05:26 erlib

软件技术-零基础-MD5加密处理和自动跳

欢迎关注我的专栏( つ•̀ω•́)つ【人工智能通识】 如何将用户的密码加密之后再存储? MD5 加密的目的是保护用户的隐私,尤其是一些很敏感的密码,原则上这些密码的明文只能出现在用户电脑上,不能在网络上传输,更不能存储在网站服务器上。 MD5是一种不可逆的加密算法,就是说它可以把用户密码变为一串新字符,而原则上没有任何方法可以把这串新字符再变回去找到用户真实的密码。(但没有什么是绝对的,只是相对来说是这样) MD5总是生成32个英文字符和字母混合的字符串。 前端加密 实际上我们只需要在网页端将用户所有输入的密码都处理一下就可以了,不涉及后端服务器程序,因为用户密码到底是什么格式,对于服务器来说都是一样的存储、验证。 需要为前端相关页面register.html,login.html,rese...阅读全文

博文 2019-04-03 20:34:38 zhyuzh3d