作者:AlbertWen
添加时间:2017-10-29 10:24:50
修改时间:2025-11-25 17:57:57
分类:
21.Golang编程
编辑
Glide 是 Golang 的 Vendor 包管理器,方便你管理 vendor 和 verdor 包。类似 Java 的 Maven,PHP 的 Composer。
主要特性:
-
简单管理依赖
-
支持 versioning packages,包括 Semantic Versioning 2.0.0 支持
-
支持 aliasing packages (e.g. for working with github forks)
-
Remove the need for munging import statements
-
支持所有 go 工具
-
支持 VCS 工具和 Go 支持:git、bzr、hg、svn
-
支持定制本地和全局插件 (see docs/plugins.md)
-
仓库缓存
作者:AlbertWen
添加时间:2018-07-12 12:36:26
修改时间:2025-11-14 14:52:10
分类:
21.Golang编程
编辑
作者:AlbertWen
添加时间:2017-10-29 20:44:45
修改时间:2025-11-24 12:38:35
分类:
21.Golang编程
编辑
基本构成要素
Go 的语言符号 又称 词法元素,共包括 5 类内容——标识符(identifier)、关键字(keyword)、字面量(literal)、分隔符(delimiter) 和 操作符(operator),它们可以组成各种表达式 和 语句,而后者都无需以分号结尾。
作者:AlbertWen
添加时间:2017-10-27 12:55:20
修改时间:2025-11-26 09:49:18
分类:
21.Golang编程
编辑
这一章我们主要介绍了Go语言的一些语法,通过语法我们可以发现Go是多么的简单,只有二十五个关键字。让我们再来回顾一下这些关键字都是用来干什么的。
break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var
作者:AlbertWen
添加时间:2017-10-27 13:02:18
修改时间:2025-11-26 08:07:57
分类:
21.Golang编程
编辑
Go变量 初始化
对 复合类型(数组、切片、字典、结构体)变量的初始化是,有一些语法限制:
1、初始化表达式必须包含类型标签;
2、左花括号必须在类型尾部,不能另起一行;
3、多个成员初始值以逗号分隔;
4、允许多行,但每行须以逗号 或 右花括号结束;
作者:AlbertWen
添加时间:2017-10-29 10:12:43
修改时间:2025-11-16 01:53:14
分类:
21.Golang编程
编辑
执行 go clean 命令会删除掉执行其它命令时产生的一些文件和目录,包括:
-
在使用 go build 命令时在当前代码包下生成的与包名同名或者与Go源码文件同名的可执行文件。在Windows下,则是与包名同名或者Go源码文件同名且带有“.exe”后缀的文件。
-
在执行 go test 命令并加入 -c 标记时在当前代码包下生成的以包名加“.test”后缀为名的文件。在Windows下,则是以包名加“.test.exe”后缀为名的文件。我们会在后面专门介绍 go test 命令。
作者:AlbertWen
添加时间:2017-10-29 21:06:51
修改时间:2025-11-16 03:35:23
分类:
21.Golang编程
编辑
Java 中的集合(set)去重很方便,PHP 中的数组值去重,就更加方便,一个函数搞定:array_unique(),Golang 中就比较苦逼了,官方没有提供对“切片去重”的功能,而项目中,又经常用到这个功能,,我们可以模拟 Java 集合的功能,实现 Golang 版集合的同时,顺便把 去重 和 排序 做了,它的主要实现原理是:利用 map 数据 不允许键重名 的特点,参考代码如下:
作者:AlbertWen
添加时间:2017-10-29 20:37:40
修改时间:2025-11-11 11:09:43
分类:
21.Golang编程
编辑
Golang 判断文件是否存在有点怪异,是根据在操作文件时返回的错误信息来判断的,而不能直接根据路径判断
版本1:
func IsExists(path string) (bool, error) {
_, err := os.Stat(path)
if err == nil {
return true, nil
}
if os.IsNotExist(err) {
return false, nil
}
return false, err
}
作者:AlbertWen
添加时间:2017-10-29 20:54:41
修改时间:2025-11-14 19:18:00
分类:
21.Golang编程
编辑
package main
import "fmt"
// 用户
type User struct {
Id int
Name string
Age int
}
func main() {
user := User{Id:2, Name:"golang"}
// 打印 结构体
fmt.Printf("%+v", user)
// 输出换行符
fmt.Printf("\n")
// 判断实例是否为空
fmt.Println(user == User{})
}
输出:
{Id:2 Name:golang Age:0}
false
作者:AlbertWen
添加时间:2017-11-19 18:21:16
修改时间:2025-11-21 17:02:21
分类:
21.Golang编程
编辑
Golang 内建的 close 方法可以关闭 channel,如果往已经关闭的 channel 发送数据,则会报错:panic: close of closed channel.
看如下代码,在一段时间内,生产者可以不断往 channel 写入数据,消费者进行处理,一段时间后 channel 关闭了,这个时候如果还有数据往 channel 发送,程序就会报错。
package main
import (
"fmt"
"sync"
"time"
)
func main() {
jobs := make(chan int)
var wg sync.WaitGroup
go func() {
time.Sleep(time.Second * 3)
close(jobs)
}()
go func() {
for i := 0; ; i++ {
jobs <- i
fmt.Println("produce:", i)
}
}()
wg.Add(1)
go func() {
defer wg.Done()
for i := range jobs {
fmt.Println("consume:", i)
}
}()
wg.Wait()
}