一、命令
如果你已安装了golang环境,你可以在命令行执行go命令查看相关的Go语言命令:
➜ demo1$ go
Go is a tool for managing Go source code.
Usage:
go <command> [arguments]
The commands are:
bug start a bug report
build compile packages and dependencies
clean remove object files and cached files
doc show documentation for package or symbol
env print Go environment information
fix update packages to use new APIs
fmt gofmt (reformat) package sources
generate generate Go files by processing source
get add dependencies to current module and install them
install compile and install packages and dependencies
list list packages or modules
mod module maintenance
run compile and run Go program
test test packages
tool run specified go tool
version print Go version
vet report likely mistakes in packages
Use "go help <command>" for more information about a command.
Additional help topics:
buildconstraint build constraints
buildmode build modes
c calling between Go and C
cache build and test caching
environment environment variables
filetype file types
go.mod the go.mod file
gopath GOPATH environment variable
gopath-get legacy GOPATH go get
goproxy module proxy protocol
importpath import path syntax
modules modules, module versions, and more
module-get module-aware go get
module-auth module authentication using go.sum
packages package lists and patterns
private configuration for downloading non-public code
testflag testing flags
testfunc testing functions
vcs controlling version control with GOVCS
Use "go help <topic>" for more information about that topic.
如下表所示:
命令 | 介绍 |
---|---|
append | 用来追加元素到数组、slice中,返回修改后的数组、slice |
go env | 用于打印Go语言的环境信息。 |
go run | 命令可以编译并运行命令源码文件。 |
go get | 可以根据要求和实际情况从互联网上下载或更新指定的代码包及其依赖包,并对它们进行编译和安装。 |
go build | 命令用于编译我们指定的源码文件或代码包以及它们的依赖包。 |
go install | 用于编译并安装指定的代码包及它们的依赖包。 |
go clean | 命令会删除掉执行其它命令时产生的一些文件和目录。 |
go doc | 命令可以打印附于Go语言程序实体上的文档。我们可以通过把程序实体的标识符作为该命令的参数来达到查看其文档的目的。 |
go test | 命令用于对Go语言编写的程序进行测试。 |
go list | 命令的作用是列出指定的代码包的信息。 |
go fix | 会把指定代码包的所有Go语言源码文件中的旧版本代码修正为新版本的代码。 |
go vet | 是一个用于检查Go语言源码中静态错误的简单工具。 |
go tool pprof | 命令来交互式的访问概要文件的内容。 |
二、运算符
Go 语言内置的运算符有:
- 算术运算符
- 关系运算符
- 逻辑运算符
- 位运算符
- 赋值运算符
1.算数运算符
如下表所示:
运算符 | 描述 |
---|---|
+ | 相加 |
- | 相减 |
* | 相乘 |
/ | 相除 |
% | 求余 |
注意: ++(自增)和–(自减)在Go语言中是单独的语句,并不是运算符。
2.关系运算符
如下表所示:
运算符 | 描述 |
---|---|
== | 检查两个值是否相等,如果相等返回 True 否则返回 False。 |
!= | 检查两个值是否不相等,如果不相等返回 True 否则返回 False。 |
> | 检查左边值是否大于右边值,如果是返回 True 否则返回 False。 |
>= | 检查左边值是否大于等于右边值,如果是返回 True 否则返回 False。 |
< | 检查左边值是否小于右边值,如果是返回 True 否则返回 False。 |
<= | 检查左边值是否小于等于右边值,如果是返回 True 否则返回 False。 |
3. 逻辑运算符
如下表所示:
运算符 | 描述 |
---|---|
&& | 逻辑 AND 运算符。 如果两边的操作数都是 True,则为 True,否则为 False。 |
ll | 逻辑 OR 运算符。 如果两边的操作数有一个 True,则为 True,否则为 False。 |
! | 逻辑 NOT 运算符。 如果条件为 True,则为 False,否则为 True。 |
4. 逻辑运算符
位运算符对整数在内存中的二进制位进行操作
如下表所示:
运算符 | 描述 |
---|---|
& | 参与运算的两数各对应的二进位相与。(两位均为1才为1) |
l | 参与运算的两数各对应的二进位相或。(两位有一个为1就为1) |
^ | 参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。(两位不一样则为1) |
<< | 左移n位就是乘以2的n次方。“a<<b”是把a的各二进位全部左移b位,高位丢弃,低位补0。 |
>> | 右移n位就是除以2的n次方。“a>>b”是把a的各二进位全部右移b位。 |
5. 赋值运算符
如下表所示:
运算符 | 描述 |
---|---|
= | 简单的赋值运算符,将一个表达式的值赋给一个左值 |
+= | 相加后再赋值 |
-= | 相减后再赋值 |
*= | 相乘后再赋值 |
/= | 相除后再赋值 |
%= | 求余后再赋值 |
<<= | 左移后赋值 |
>>= | 右移后赋值 |
&= | 按位与后赋值 |
l= | 按位或后赋值 |
^= | 按位异或后赋值 |
三、下划线
“
_
”是特殊标识符,用来忽略结果。
1. 下划线在import中
import 下划线的作用:当导入一个包时,该包下的文件里所有init()
函数都会被执行,然而,有些时候我们并不需要把整个包都导入进来,仅仅是是希望它执行init()
函数而已。这个时候就可以使用 import 引用该包。即使用【import _
包路径】只是引用该包,仅仅是为了调用init()
函数,所以无法通过包名来调用包中的其他函数
package main
import _ "./hello"
func main() {
// hello.Print()
//编译报错:./main.go:6:5: undefined: hello
}
2. 下划线在代码中
package main
import (
"fmt"
"os"
)
func main() {
f, _ := os.Open("./text.txt")
defer f.Close()
fmt.Print(f)
}
解释:
1、下划线意思是忽略这个变量,比如
os.Open
,返回值为*os.File
,返回错误普通写法是:f,err :=
,如果os.Open("xxxxxxx")
此时不需要知道返回的错误值 就可以用:f, _ := os.Open("xxxxxx")
,如此则忽略了error
变量
2、占位符,意思是那个位置本应赋给某个值,但是咱们不需要这个值。所以就把该值赋给下划线,意思是丢掉不要。这样编译器可以更好的优化,任何类型的单个值都可以丢给下划线。 这种情况是占位用的,方法返回两个结果,而你只想要一个结果。那另一个就用 “_
” 占位,而如果用变量的话,不使用,编译器是会报错的。
补充:
// 第二个import就是不直接使用mysql包,只是执行一下这个包的init函数,
// 把mysql的驱动注册到sql包里,然后程序里就可以使用sql包来访问mysql数据库了
import "database/sql"
import _ "github.com/go-sql-driver/mysql"
四. 正则表达式
网上挺多的,有时间整理一下