Go 环境与变量数据类型
环境
Go 下载安装
推荐去 Golang 中文社区下载 Go 编译器 官方下载
傻瓜式安装即可
安装完成之后打开 cmd ,输入go version
成功输出版本号则代表安装成功
Go 环境变量
关于 Go 的环境变量的问题 seaconch 就在刚才突然想到了比较贴切的形容方式
1. GOROOT
GOROOT 常被描述为 Go 编译器的路径
GOROOT 不需要我们去配,一般安装 GO 编译器时选择的路径就是 GOROOT 路径
seaconch 补充一点:import 包时,原生 pkg 也是根据 GOROOT 来引用的
所以说使用过 npm 的同学可以理解为:全局包路径
2. GOPATH
GOPATH 常被描述为 Go 源码(工程)路径
GOPATH 需要我们去手动配置,当然如果只是随便写个 demo 练手,不配也无妨
seaconch 认为 GOPATH 有点像 npm 的本地包路径
3. 补充
其实并不是说不在这两个目录下就不可以引入包,例如我们就可以通过 ../pkg 的方式引入并使用我们自己写的包没有问题,并且只要保持他们的相对路径关系不变,那么复制到哪里都是可以运行起来的,缺点是不可以执行 go install 命令
Hello World 斥候
在任意位置新建一个记事本
输入下列代码
package main
import "fmt"
func main () {
fmt.Println("seaconch.")
}
将文件保存为 a.go 注意后缀名,确保不是 .txt
在 a.go 所在路径运行 cmd 输入 go run a.go
可以看到成功输出了 seaconch.
输出中文的小伙伴现在还不要着急,因为目前还不是 utf-8 编码
常用命令
go run xxx.go
调试神器,无需 build 直接执行代码;在特殊情况下需要批量 run,例如 go run main1.go main2.go
注: main1.go 与 main2.go 同包 并属于 extension 关系
go build xxx.go
编译源码,生成可执行程序;在特殊情况下需要批量编译,例如 go build main1.go main2.go
go install
编译生成项目可执行文件,默认生成在 GOPATH 目录下的 bin 目录中
变量与数据类型
变量
define variable : var 变量名 类型
举个栗子
- var _name string
- var (
- _name string
- _age int
- )
simple define : 变量名 := 表达式
该方式只适用于函数内部
举个栗子:
- _name := “seaconch”
- _name, _age := “seaconch”, 99
注:变量名称区分大小写
特色
在 Go 语言当中,变量的操作有三个比较明显的特色
-
:=
该方式只适用于未被 define 过的变量,并且只可以在 func 内部使用 -
x, y := y, x
经典的变量交换值得问题在 Go 语言中非常简单,只是像这样而已 -
_
因为 Go 语言中,多返回值特别常见,当我们只需要多个返回值之中的个别值时,可以采用 name, _ := 方法() 的方式可以舍弃第二个返回值,这种类似的方式达到想要的效果
常量
常量需要有初始值
define
举个栗子:
const _pi float64 = 3.14 /
const _version string = “v1.0”
多赋值
const (
A = 1
B
C = 2
D
)
多赋值情况下,默认不赋值的常量使用上一个常量的值,因此 B = 1, D = 2
通过使用 iota 来表示枚举:
const (
sunday = iota
monday
tuesday
wednesday= 88
thursday
friday = iota
saturday
)
sunday -> 0
monday -> 1
tuesday -> 2
wednesday -> 88
thursday -> 88
friday -> 5
saturday -> 6
可以看出 iota 的作用了吧, iota 有一点像是一个计数器,seaconch 抛砖引玉,用这个小例子来说明其用途
整数
int 整形,会根据 cpu & ide 决定 64 / 32
uint 无符号 int
byte == uint8 可以理解为类型别名
rune == int32 可以理解为类型别名
浮点
float32 / float64 精度不同
复数跳过
布尔型
布尔型有两点需要主要:
默认值为 false
Golang 中1 与 true 0 与 false 没有可比性
字符串
截取字符串:
_str := "hello seaconch."
fmt.Println(_str[:]) -> hello seaconch.
fmt.Println(_str[7:]) -> eaconch.
fmt.Println(_str[:8]) -> hello se
fmt.Println(_str[7:8]) -> e
看码会意~
7 <= 目标字符串的索引 < 8
好了,今天就到这里吧