go常用命令

0.Go Bulid 命令
a.打包成exe后缀文件,在windows上可以直接运行,
首先,进入到main.go文件目录下,执行以下命令 go build main.go
-o 参数可以指定输出目录与打包后的文件名 go build -o gotest main.go
b.打包成二进制文件,可以在linux平台运行
首先,进入到main.go文件目录下,执行以下命令
set CGO_ENABLED=0
set GOARCH=amd64
set GOOS=linux

	    GOOS指的是目标操作系统,支持以下操作系统
		darwin freebsd linux windows android dragonfly netbsd openbsd plan9 solaris

		GOARCH指的是目标处理器的架构,支持一下处理器架构
		arm arm64 386 amd64 ppc64 ppc64le mips64 mips64le s390x
	
	go build main.go
  1. 总而言之,Go语言对于当前大多数主流语言来讲,最大的优势在于具有较高的生产效率、先进的依赖管理和类型系统,以及原生的并发计算支持。因此,Go语言自发布以来就受到了各个领域开发者的关注和青睐

  2. Go语言标准库常用的包及功能
    Go语言标准库包名 功 能
    bufio 带缓冲的 I/O 操作
    bytes 实现字节操作
    container 封装堆、列表和环形列表等容器
    crypto 加密算法
    database 数据库驱动和接口
    debug 各种调试文件格式访问及调试功能
    encoding 常见算法如 JSON、XML、Base64 等
    flag 命令行解析
    fmt 格式化操作
    go Go语言的词法、语法树、类型等。可通过这个包进行代码信息提取和修改
    html HTML 转义及模板系统
    image 常见图形格式的访问及生成
    io 实现 I/O 原始访问接口及访问封装
    math 数学库
    net 网络库,支持 Socket、HTTP、邮件、RPC、SMTP 等
    os 操作系统平台不依赖平台操作封装
    path 兼容各操作系统的路径操作实用函数
    plugin Go 1.7 加入的插件系统。支持将代码编译为插件,按需加载
    reflect 语言反射支持。可以动态获得代码中的类型信息,获取和修改变量的值
    regexp 正则表达式封装
    runtime 运行时接口
    sort 排序接口
    strings 字符串转换、解析及实用函数
    time 时间接口
    text 文本模板及 Token 词法器

  3. Go 开发包的安装目录的功能及说明
    目录名 说明
    api 每个版本的 api 变更差异
    bin go 源码包编译出的编译器(go)、文档工具(godoc)、格式化工具(gofmt)
    blog Go 博客的模板,使用 Go 的网页模板,有一定的学习意义
    doc 英文版的 Go 文档
    lib 引用的一些库文件
    misc 杂项用途的文件,例如 Android 平台的编译、git 的提交钩子等
    pkg Windows 平台编译好的中间文件
    src 标准库的源码
    test 测试用例

  4. := 推导声明
    注意:由于使用了:=,而不是赋值的=,因此推导声明写法的左值变量必须是没有定义过的变量。若定义过,将会发生编译错误。
    注意:在多个短变量声明和赋值中,至少有一个新声明的变量出现在左值中,即便其他变量名可能是重复声明的,编译器也不会报错

5.Golang 更明确的数字类型命名,支持 Unicode,支持常用数据结构
类型 长度(字节) 默认值 说明
bool 1 false
byte 1 0 uint8
rune 4 0 Unicode Code Point, int32
int, uint 4或8 0 32 或 64 位
int8, uint8 1 0 -128 ~ 127, 0 ~ 255,byte是uint8 的别名
int16, uint16 2 0 -32768 ~ 32767, 0 ~ 65535
int32, uint32 4 0 -21亿~ 21亿, 0 ~ 42亿,rune是int32 的别名
int64, uint64 8 0
float32 4 0.0
float64 8 0.0
complex64 8
complex128 16
uintptr 4或8 以存储指针的 uint32 或 uint64 整数
array 值类型
struct 值类型
string “” UTF-8 字符串
slice nil 引用类型
map nil 引用类型
channel nil 引用类型
interface nil 接口
function nil 函数

6.&取变量所对应的地址,取变量地址所对应的值
var a = 10
println(&a)
println(
(&a))

7.go func表示func这个函数会是以协程的方式运行。这样就可以提供程序的并发处理能力
go 关键字用来创建 goroutine (协程),是实现并发的关键;
因为 goroutine 在多核 cpu 环境下是并行的。如果代码块在多个 goroutine 中执行,我们就实现了代码并行。那么问题来了,怎么拿到并行的结果呢?这就得用 channel 了。

8.&
var a = [3]int{1, 2, 3}
var a2 = [3]int{1, 2, 3}
var b = a
var b2 = &a2
b[1]++
b2[1]++
fmt.Println(a, b, b2, a2)
[1 2 3] [1 3 3] &[1 3 3] [1 3 3]
加&,原始变量、当前引用变量都会变化;不加&,原始变量不会变化、当前引用变量会变化

9.defer
a.defer定义?
在Go语言中,可以使用关键字defer向函数注册退出调用,即主函数退出时,defer后的函数才被调用。defer语句的作用是不管程序是否出现异常,均在函数退出时自动执行相关代码。
b.defer用途
在函数中,程序员经常需要创建资源(比如:数据库连接、文件句柄、锁等) ,为了在函数执行完 毕后,及时的释放资源,Go 的设计者提供 defer (延时机制)。

10.strconv.ParseInt用法
i, err := strconv.ParseInt(“123”, 10, 32)
if err != nil {
panic(err)
}
参数1 数字的字符串形式
参数2 数字字符串的进制 比如二进制 八进制 十进制 十六进制
参数3 返回结果的bit大小 也就是int8 int16 int32 int64

11.方法在func关键字后是接收者而不是函数名,接收者可以是自己定义的一个类型,这个类型可以是struct,interface,甚至我们可以重定义基本数据类型
type myint int

//乘2
func (p *myint) mydouble() int {
	*p = *p * 2
	return 0
}

func main() {
	var i myint = 2
	i.mydouble()
	fmt.Println("i = ", i)
}

12.equalfold不区分大小写,==区分大小写(和 strings.Compare相似)

13.关键字panic的作用是制造一次宕机,宕机就代表程序运行终止,但是已经“生效”的延迟函数仍会执行(即已经压入栈的defer延迟函数,panic之前的)。
关键字recover从英文的意思上就知道是恢复,那么这个恢复是恢复什么呢?是恢复运行状态,继续运行?还是恢复到宕机之前?
package main
import “fmt”
func main() {
defer func() {
if info := recover(); info != nil {
fmt.Println(“触发了宕机”, info)
} else {
fmt.Println(“程序正常退出”)
}
}()
fmt.Println(“bbbbbb”)
fmt.Println(“cccccc”)
panic(“fatal error”)
fmt.Println(“ddddd”)
defer func() {
fmt.Println(“eeeeeeee”)
}()
}

运行结果如下:
bbbbbb
cccccc
触发了宕机 fatal error

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值