Docker 是一个开源的应用容器引擎
etcd 是一个高可用的 Key/Value 存储系统,主要用于分享配置和服务发现。
例如以 $GOOS_$GOARCH 为命名方式,如 linux_amd64 ,表示 linux 系统,平台架构是 64 位。
根据约定,GOPATH 下(即工作区) 需要建立 3 个目录:
在命令行或终端输入 go 即可查看所有支持的命令。
Go 常用命令:
- // 导入后起别名
- // 这样就可以使用 str 来调用代码包 strings 中的函数
- import str "strings"
- // 例如 str.HasPrefix("abc", "a")
-
- // 本地化导入
- import . "strings"
- // 这样就可以使用 HasPrefix("abc", "a") 来调用
-
- // 仅仅初始化,不调用程序的实体
- // 仅执行代码包中的初始化函数
- import _ "strings"
- // 代码包初始化函数即:无参数声明和结果声明的 init 函数。init 函数可以被声明在任何文件中,且可以有多个。
-
- // 导入多个代码包
- import (
- "flag"
- "fmt"
- "strings"
- )
-
- import "fmt"
- 告诉 Go 编译器这个程序需要使用 fmt 包的函数,fmt 包实现了格式化 IO(输入/输出)的函数
- 可以是相对路径也可以是绝对路径,推荐使用绝对路径(起始于工程根目录)
-
- #点操作
- import(
- . "fmt"
- )
- 这个点操作的含义就是这个包导入之后在你调用这个包的函数时,你可以省略前缀的包名,也就是前面你调
-
- 用的 fmt.Println("hello world") 可以省略的写成 Println("hello world")
-
- #别名操作(别名操作顾名思义我们可以把包命名成另一个我们用起来容易记忆的名字)
- import(
- f "fmt"
- )
- 别名操作的话调用包函数时前缀变成了我们的前缀,即 f.Println("hello world")
-
- #_操作(这个操作经常是让很多人费解的一个操作符,请看下面这个 import)
- import (
- "database/sql"
- _ "github.com/ziutek/mymysql/godrv"
- )
- _操作其实是引入该包,而不直接使用包里面的函数,而是调用了该包里面的 init 函数
-
go run 命令用于运行命令源码文件。
特别注意:
- -n: 打印编译过程中所需的命令,但并不执行
- -x: 打印编译过程中所需的命令,并执行他们。
-
go build 命令用于编译源码文件或代码包。编译非命令源码文件不会产生任何结果文件,编译命令源码文件会在该命令的执行目录中生成一个可执行文件。
go install 命令用于编译并安装代码包或源码文件。
go get 命令是用于从远程代码仓库(如 github) 上下载并安装代码包。指定的代码包会被下载到 $GOPATH 中包含的第一个工作区的 src 目录中。
常用标记:
用于声明变量的关键字 var ,以及用于声明常量的关键字 const 。
- #普通赋值,由关键字 var、变量名称、变量类型、特殊标记=,以及相应的值组成。
- #若只声明不赋值,则去除最后两个组成部分即可。
- var num1 int = 1
- #或:
- var num2, num3 int = 2, 3 // 注释:平行赋值
- #或:
- var ( // 注释:多行赋值
- num4 int = 4
- num5 int = 5
- )
-
上述这三种变量声明的方式,也适用于常量。但是要注意,对于常量不能出现只声明不赋值的情况。
两者同 c 一样
* 是代表指针,也可以从地址中获取内容
& 获取一个对象的地址
- i := 1
- point := &i // point 等于一个地址
- data = *point //data == 1
-
另外函数中要分清楚值传递和指针传递,这是一个交换函数,很清晰
- func change(a *int,b *int) {
- c := *a
- *a = *b
- *b = c
- }
- a := 3
- b := 4
- func(&a,&b)