Golang 基础 环境配置和包管理

Golang 基础环境和语法

交叉编译

windows 下打包 linux 的运行程序。

设置变量

set GOARCH=amd64
set GOOS=linux

go build

取消变量

set GOARCH=
set GOOS=

显示变量

set GO

go test

当go test以包列表模式运行时,go test会缓存成功的包的测试结果以避免不必要的重复测试。当然,有时候我们测试的时候并不喜欢有缓存,我们可以手动禁用缓存。可以通过下列方式禁用缓存:

带上 -count=1 参数禁用缓存。

如,执行下面命令测试,便会禁用缓存测试结果

go test -v -count=1 filename_test.go

手动清除测试缓存
除了在执行测试命令的时候加上禁用缓存参数,我们还可以执行下面的命令手动清除缓存,需要注 意的是,每次都得清除,不然下次执行的还是上次的结果。

go clean -testcache

VsCode setting.xml 配置

{
    "go.testFlags": ["-v","-count=1"],
}

映射

使用make声明映射

创建一个映射,键的类型是string,值的类型是int

dict := make(map[string]int)

创建一个映射,键和值的类型都是string,使用两个键值对初始化映射

dict := map[string]string{"Red":"#da1337","Orange":"#e95a22"}

声明一个存储字符串切片的映射,使用字符串切面作为值

dict := map[int][]string{}

类型的本质

内置类型

  • 数值类型
  • 字符串类型
  • 布尔类型

引用类型

  • 切片
  • 映射
  • 通道
  • 接口
  • 函数类型

Go 语言里的引用类型有如下几个:切片、映射、通道、接口和函数类型。当声明上述类型
的变量时,创建的变量被称作标头(header)值。从技术细节上说,字符串也是一种引用类型。
每个引用类型创建的标头值是包含一个指向底层数据结构的指针。每个引用类型还包含一组独特
的字段,用于管理底层数据结构。因为标头值是为复制而设计的,所以永远不需要共享一个引用
类型的值。标头值里包含一个指针,因此通过复制来传递一个引用类型的值的副本,本质上就是
在共享底层数据结构。

结构类型

结构类型可以用来描述一组数据值,这组值的本质即可以是原始的,也可以是非原始的。如
果决定在某些东西需要删除或者添加某个结构类型的值时该结构类型的值不应该被更改,那么需
要遵守之前提到的内置类型和引用类型的规范。

包管理

  • Go Mod
  • Go Vendor
  • Go dep
  • Go Modules

Go Modules 使用本地包

Go Modules下使用本地包 https://www.cnblogs.com/dexte/p/12337220.html

方式一(推荐)

严格的说,方式一是使用项目目录下的go文件。
项目目录如下:

【如下所示, 搜文件树模式编写表示】

└─ studyModule //项目主目录
  ├─ log //主目录下文件夹
  │  └─ log.go // log目录下go文件
  ├─ main.go // 主目录下go文件
  └─ go.mod

log.go 中首行 package log,注意,log文件夹下不要 go mod init,否则会导致无法编译

  1. studyModule文件夹下 go mod init sts
  2. main.go 中调用 log.go中的方法:import "sts/log"-> 此处为主目录下的mod名下边的log文件夹
  3. log目录下的方法,变量等依然需要大写。如果不能正常使用可尝试在主目录下执行 go mod tidy

方式二(使用go mod replace)

└─studyModule //项目主目录
  └─4fan.top //主目录下文件夹
  │  └─DY
  │     ├─[email protected]
  │     ├─ *.go
  │     └─go.mod【2】
  ├─main.go // 主目录下go文件
  └─go.mod【1】
  • go.mod【2】:Module Name:DYlogger
  • go.mod 【1】:
require 4fan.top/DY/DYlogger v1.1.0
replace 4fan.top/DY/DYlogger => ./4fan.top/DY/[email protected]

main.go中: import "4fan.top/DY/DYlogger"

说明:go mod是一个理想化的包管理工具,因此版本在go mod中很重要。(semver(语义化版本号))

go.mod 【1】中的require最好指明版本 对于文件名名字以及mod文件中的版本号码,未测试在其它情况下是否生效,请自行测试。

你可能感兴趣的:(Golang,golang,开发语言,后端)