欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Go 环境与变量数据类型

程序员文章站 2022-06-03 22:39:10
...

环境

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 语言当中,变量的操作有三个比较明显的特色

  1. := 该方式只适用于未被 define 过的变量,并且只可以在 func 内部使用
  2. x, y := y, x 经典的变量交换值得问题在 Go 语言中非常简单,只是像这样而已
  3. _ 因为 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 精度不同

复数跳过

布尔型

布尔型有两点需要主要:

  1. 默认值为 false

  2. 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

好了,今天就到这里吧