go学习笔记一


go语言简介

静态强类型、编译型语言。

动态类型语言:赋值发生在程序运行阶段,不要求显式声明。如:a=3。编译阶段更高效,但是运行时的类型检查会影响到性能,出错机会较大。

静态类型语言:信息在编译阶段就需要,变量类型需要显式声明。如:float x = 0.3。在编译阶段做更多处理,但是在运行时效率更好,出错率低。

强类型:一旦给变量赋值类型,就不能和其它类型混用:

如:错的

a = 3
a = 3+'string'

弱类型:可以和其它类型混合计算:

var item = 5;
item = item + "string";  # 可以结合:5string

语法与C相近,但是:内存安全,GC,并发计算。

语言特点

  • 背靠大厂,google,可靠
  • 天生支持并发
  • 简单,易上手
  • 内置runtime,支持垃圾回收
  • 可以直接编译成机器码,不依赖其它库
  • 丰富的标准库
  • 可以跨平台编译,如windows平台开发,部署到Linux。

应用领域

  • 服务器编程
  • 开发云平台
  • 区块链
  • 分布式系统
  • 网络编程

哪些公司在用go语言

Google、腾讯、京东、小米等等,部分项目都用到了go。字节大量使用go。

golang开发环境搭建

image-20220412102645952

windows

安装

先查看是否有老版本:

image-20220412102850222

发现有老版本,就先卸载:

image-20220412102937394

卸载完成之后:

image-20220412103254380

安装新版本:

image-20220412103328644

建议不要默认路径,而是新建一个文件夹如:D:\go1.18

安装过程一路next。

安装完成之后:

image-20220412103522841

cmd查看版本:

image-20220412103548362

如果有问题,就需要配置一下环境变量。

配置go环境

$env:GO111MODULE="on" #111之后使用模块化的管理,不在依赖go path

cmd运行会报错,可以用powshell:

image-20220412104234729

设置代理:使用go mod管理库,可能有科学上网的问题,需要设置下代理。

$env:GOPROXY="https://goproxy.cn"

路径

set GOROOT=D:\go1.18 #go 的安装路径
set GOPATH=C:\Users\PC\go 
# go项目的安装路径,之前需要通过go path才能创建项目,现在高版本有了模块化管理了,一般不用

安装配置git

安装具体步骤不说了。

Linux平台

类似,安装到再说。

开发工具

goland,vscode

vscode

安装扩展。

image-20220412123121163

测试:

image-20220412123621587

之前的时候go插件安装会有github的问题,现在没有了。

每次go run比较麻烦,安装扩展:code runner

image-20220412123733525

可以点击直接运行。

vscode快速生成代码片段

pkgm

main包+main主函数

image-20220412133112624

ff

打印

image-20220412133153228

for

for 循环

image-20220412133237786

forr

for range

image-20220412133258353

fmain

image-20220412133340249

s.print!

image-20220412133600632

代码:

func main() {
    s := "kangkang"
    fmt.Printf("s: %v\n", s)
}

go常用命令

go build

生成可执行文件。

image-20220412124447670

go run

运行

go clean

清除编译过程中产生的一些文件。

go env

显示环境变量的配置

go get

安装包

https://go.dev/

例如mysql

image-20220412130131254

go get之前需要初始化:

PS C:\Users\PC\Desktop\go_pro> go mod init go_pro
go: creating new go.mod: module go_pro
go: to add module requirements and sums:
        go mod tidy

然后go get:

PS C:\Users\PC\Desktop\go_pro> go get github.com/go-sql-driver/mysql
go: downloading github.com/go-sql-driver/mysql v1.6.0
go: added github.com/go-sql-driver/mysql v1.6.0

go.mod文件会出现mysql的依赖:

module go_pro

go 1.18

require github.com/go-sql-driver/mysql v1.6.0 // indirect

go install

编译并安装

如何编写go代码

代码组织

go应用使用包和模块来组织代码。

包对应到文件系统就是文件夹,模块就是go源文件,一个包中会有多个模块,或者多个子包。

go项目管理工具

早期(1.11)之前使用gopath管理项目,不方便。之后使用gomod来管理项目。

步骤

image-20220412142734689

  • 创建项目(新建文件夹)
  • vscode打开这个文件夹,go mod init 【项目名】初始化
  • 创建包
  • 创建模块
  • 相互调用

golang标识符、关键字、命名规则

稍作了解,不用背,后面会使用到。

标识符

变量、常量、方法、结构体、数组等等的名字

组成

  1. 数字、字母、下划线
  2. 只能字母或者下划线开头
  3. 标识符区分大小写

如正确的命名:

package main

func main() {
    var name string
    var age int
    var _sys int
}

关键字

image-20220412144340632

预定义标识符

常量:
true, false, iota, nil

类型:
int, int8, int16, int32, int64, uint,
uint8, uint16, uint32, uint64, uintptr,
float32, float64, complex128, complex64,
bool, byte, rune, string, error

函数:
make, len, cap, new, append, copy, close, 
delete, complex, real, imag, panic, recover

命名规范

区分大小写

语法层面限定:任何对外暴露的名字必须以大写字母开头,不对外暴露的以小写字母开头。

typora更改字体颜色:Ctrl+Alt+【颜色】

autohotkey工具

地址:hotkey

包名:和目录保持一致,要有意义,和标准库不冲突,包名小写。

文件命名:小写,下划线分隔单词

结构体:驼峰命名法

接口命名:er作为后缀,如:Reader,Writer。

变量:一般驼峰

常量:全部大写字母,下划线分词