-
Notifications
You must be signed in to change notification settings - Fork 19
GoBase
目录 start
目录 end|2020-11-04 20:24|
官网 | 镜像官网 | Github Repo | Go Doc
project-layout
项目结构规范
1.11 开始支持 Wiki
-
go env -w GOSUMDB=off
关闭官方 sum 校验服务
配置国内源
export GO111MODULE=on
export GOPROXY=https://mirrors.aliyun.com/goproxy/
export GOSUMDB=sum.golang.google.cn
-
go mod init moduleName
按名字初始化模块-
注意,如果想通过
go get URL
方式进行安装,就必须使用代码托管的完整地址, 不需要就可以简化包名
- 例如
module github.com/{username}/{repo}/path/to
-
注意,如果想通过
-
go mod edit -replace github.com/kuangcp/gobase/cuibase=./../cuibase
- go.mod文件会新增:
replace github.com/kuangcp/gobase/cuibase => ./../cuibase
- 多模块开发时,使用本地开发的模块取代发布的版本
- fork 别人项目后开发,可用来替换成自己的模块
replace gihub.com/aaa/bbb => gihub.com/ccc/bbb
- go.mod文件会新增:
-
go clean -modcache
go mod graph | 列出模块依赖(包含依赖传递) |
go mod tidy | 删除错误或者不使用的modules |
go mod vendor | 生成vendor目录 |
go mod verify | 验证依赖是否正确 |
go mod why | 查找依赖 |
go get
go get golang.org/x/text@latest | 拉取最新的版本(优先择取 tag) |
go get golang.org/x/text@master | 拉取 master 分支的最新 commit |
go get golang.org/x/[email protected] | 拉取 指定 tag |
go get golang.org/x/text@342b2e | 拉取 指定 commit |
go get github.com/smartwalle/alipay/v3 | 拉取v3版本 设计最坑
|
go get -u | 更新 mod |
go list -m -versions golang.org/x/text | 列出可安装版本 |
类型后置的设计相关文章
螺旋形(C/C++)和顺序(Go)的声明语法
Why do a lot of programming languages put the type after the variable name?
strings 包 提供了常用字符串API
int8 int16 int32 int64 int(位数按操作系统字长而定 32/64)
// string到int
int,err:=strconv.Atoi(string)
// string到int64
int64, err := strconv.ParseInt(string, 10, 64)
// int到string
string:=strconv.Itoa(int)
// int64到string
string:=strconv.FormatInt(int64,10)
// 判断 key 存在
_, ok := dataMap["key"]
- 打印结构体
fmt.Printf("%v\n", object)
记住这个神奇的时间 2006-01-02 03:04:05
Go 中不是寻常的 YYYY-mm-dd 这种格式
基本结构
// 函数名 (参数 ) 返回值{函数体}
func functionName (param int) int {
}
使用函数作为参数
func doAny(functionName func(string, string)){}
可以多返回值 元组
类似于 Java 中的 finally 语句 例如
defer openFile.Close()
一个函数中可以定义多个 defer 语句, 执行顺序按定义顺序的逆序, 也就是栈的概念
递归读取当前目录的文件
package main
import (
"fmt"
"os"
"path/filepath"
)
func main() {
filepath.Walk("./", walkfunc)
}
func walkfunc(path string, info os.FileInfo, err error) error {
if(!info.IsDir()){
fmt.Println(path)
}
return nil
}
statik
将文件打包入二进制执行文件中去
结构体必须是大写字母开头的成员才会被处理(大写字母开头才有对外权限)
type GridConfig struct {
ID int `json:"id"`
Row int `json:"row"`
Col int `json:"col"`
Data []int `json:"data"`
}
// 第一种
func (*GenerateGrid) ReadConfig() []GridConfig {
var datas []GridConfig
fp, _ := os.Open("grid.json")
dec := json.NewDecoder(fp)
for {
err := dec.Decode(&datas)
if err != nil {
fmt.Println(err)
break
}
//use v
// fmt.Printf("%+v", datas)
for _, line := range datas {
fmt.Println(" ", line)
}
}
// 第二种方式
var datas []GridConfig
raw, err := ioutil.ReadFile("./grid.json")
// fmt.Println(raw)
if err != nil {
fmt.Println(err.Error())
os.Exit(1)
}
err = json.Unmarshal(raw, &datas)
if err != nil {
fmt.Println("error:", err)
}
for _, line := range datas {
fmt.Println(" ", line)
}
return datas
}
忽略空字段
- 字段是指针类型 且注明 omitempty
Msg struct{
Text *Content `json:"text,omitempty"`
}
lorca
H5 + chromium + Golang
桌面端
-
【 Algorithm 】
-
【 Blog 】
-
【 C 】
-
【 Database 】
-
【 Distributed 】
-
【 FrontEnd 】
- 【 FrontEnd/Frame 】
- 【 FrontEnd/Node 】
- Font
- Hexo
- JavaScript
- LearnPS
- ResponseCode
- SVG
- ViewSolution
- extjs学习笔记
-
【 Functional 】
-
【 Go 】
-
【 Groovy 】
-
【 Java 】
- 【 Java/AdvancedLearning 】
- 【 JavaBasic 】
- 【 JavaCache 】
- 【 JavaCollection 】
- 【 JavaConcurrency 】
- 【 JavaMap 】
- Annotation
- ClassFile
- Collection
- Concurrency
- Deploy
- Exception
- ExtendsAndInterface
- Generics
- IO
- JDBC
- JDKAndJRE
- JMX
- JVM
- Java11
- Java7
- Java8
- JavaNetwork
- JavaReleaseVersion
- JavaWeb
- JvmPerformance
- MQ
- MultipleLanguage
- Proxy
- Reflection
- Serialize
- SyntaxAndType
- Thread
- WebPerformance
- 【 Java/Android 】
- 【 Java/Ecosystem 】
- 【 Java/MSA 】
- 【 Java/Spring 】
- 【 Java/TemplateEngine 】
- 【 Java/Test 】
- 【 Java/Tool 】
- 【 Java/thread 】
- AlibabaJavaStandard
- DesignPattern
- HashMap解析
- Java-NIO
- Java虚拟机
- Log
- MIS
- Quartz
- RESTful
- WebSocket学习笔记
- ZooKeeper学习笔记
- android学习笔记
- 【 Java/AdvancedLearning 】
-
【 Kotlin 】
-
【 Linux 】
- 【 Linux/Alpine 】
- 【 Linux/Arch 】
- 【 Linux/Base 】
- 【 Linux/Centos 】
- 【 Linux/Container 】
- 【 Linux/Debian 】
- 【 Linux/Tool 】
- JavaDevInit
- Linux系统学习
-
【 MyBlog 】
-
【 Python 】
- 【 Python/Tool 】
- Python
- PythonConcurrent
- PythonGUI
- PythonGame
- PythonNet
- PythonOffices
- PythonWeb
- Python基础
- Python核心学习
-
【 Reactive 】
-
【 Rust 】
-
【 Scala 】
-
【 Script 】
-
【 Skills 】
- 【 Skills/Application 】
- 【 Skills/CS 】
- 【 Skills/Cache 】
- 【 Skills/Councurrency 】
- 【 Skills/DevOps 】
- 【 Skills/Document 】
- 【 Skills/Ecology 】
- 【 Skills/Network 】
- 【 Skills/Search 】
- 【 Skills/SoftwareEngineering 】
- 【 Skills/Spider 】
- 【 Skills/Test 】
- 【 Skills/Vcs 】
- 【 Skills/Work 】
- AppManual
- CelebrityQuotes
- Miscellaneous
- Platform
- Problem
- Protobuf
- RegularExpression
- SoftwareDesignEngineer
- Website
-
【 Windows 】