go语言学习(一)搭建环境与运行第一个代码

一、go语言的基本介绍
1.概述

Go(又称 Golang)一种静态强类型、编译型语言。
Go 语言语法与 C 相近。
但功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算。

2.特点
天生支持并发(最显著特点)、跨平台编译、内置runtime,支持垃圾回收

3.应用领域
服务器编程、开发云平台、区块链、分布式系统、网络编程

二、安装和配置SDK (windows)
1.下载
官网 http://golang.org/  (无法打开) 
go语言中文网 首页 - Go语言中文网 - Golang中文社区

2.windows下安装go
A 下载


解压后 放到d盘的go文件夹中。

bin目录下 go version 查看版本号

B. 配置环境变量
window下一步安装,会自动创建path和gopath

Path:命令行任意目录都可执行go命令
GOROOT:需要在环境变量中定义go的安装路径。
GOPATH:编写go项目代码的工作目录(使用gopath管理依赖使用)。

go在编译程序时(go build ),是基于goroot目录下编译的,会根据GOROOT去找相应的标准库。
当程序执行过程中,引入第三方包,是基于GOPATH目录下的文件寻找的。

通过go env 查看GOROOT和GOPATH,使用go mod管理依赖可以不用配置。

C 其他配置
查看配置:go env
打开gomod依赖:go env -w GO111MODULE=on   (auto)
配置代理

go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/,direct
go env -w GOPROXY=https://goproxy.cn,https://goproxy.io,direct

三、开发工具 GoLand 安装
1.下载安装
GoLand获取:idea.javatiku.cn/

2.相关配置
主题  setting font => consolas 
自动格式化配置:tools => file watchers => goimport、gofmt
配置GOROOT 和 GOPATH

3.创建项目
创建go modules项目
环境设置为:https://goproxy.io,direct

4.运行第一个go程序
A 代码

B 执行run时

a. 编译再运行
go bulid hello.go => 生成 .exe文件直接执行,多次执行
go bulid -o myhello.exe hello.go
b.直接运行
go run hello.go => 直接输出结果,一次性执行

C 执行流程分析
go是编译型语言,php是解释型语言。
对源文件(.go文件) => go bulid 构建生成可执行的二进制文件(.exe) => 运行得出结果
.go文件 => 编译运行一步得出结果

D 编译运行流程的文件类型分析?????

5.快速生成代码片段

pkgm  main包+main主函数
ff  fmt.Printf("", var)
for for i := 0; i < count; i++ {}
forr for _, v := range v {}
fmain func main() {}
a.print! fmt.Printf("a: %v\n", a)

四、go程序开发注意事项
1.分号
每个语句不需要分号go语言会在每行后自动加分号
(所以“{”大括号不能单独成行

2.大小写
go语言严格区分大小写
大小写对应包内成员的访问级别,privite,public)

3.引入包和定义的变量
引入的包和定义的变量必须在程序中有所使用,否则无法编译通过。

4.注释
有块注释与行注释,源代码推荐使用逐行注释

5.代码规范
代码规范是良好的编程习惯,可以使用gofmt进行格式化规范。

~~资源文档
Go语言标准库文档中文版 | Go语言中文网 | Golang中文社区 | Golang中国

mysql package - github.com/go-sql-driver/mysql - Go Packages

五、包与模块(文件夹与go文件)
go应用使用模块来组织代码,包对应到文件系统就是文件夹,模块就是**.go **的go源文件。一个包中会有多个模块,或者多个子包。

1.概述
A 包的引入
开发中,需要在不同的文件中调用其他文件定义的函数,如main.go中调用utils.go中的函数。
同时,避免函数名重名的问题。
包的函数和全局变量通过大小写控制外部函数调用权限。

B 包的原理
一个包对应一个文件夹,文件夹内的go文件对应一个模块,模块内编写相应的函数。
go以包的形式管理文件和项目目录结构。

C 包的使用
package 包名。包内的每个模块文件首行,即完成对文件的打包。
import "包名"。其他文件使用时,先导入。
包名.函数名。访问函数时执行。

~~注意事项:
为了让其他包可以访问本包的函数,函数名首字母要大写。(go 大小写对应着访问权限
可执行文件,包名要定义成main,main函数所在的文件夹下,包名为main;自定义库包名可以自定义,这是规范。
同一包下不能有相同的函数名,go不支持重载。
import包路径时,若采用gopath管理,则从gopath的对应目录下找。若采用mod管理,则从mod设置的目录下找。

六、go常用命令
直接在终端中输入 go help 即可显示所有的 go 命令以及相应命令功能简介,主要有下面这些:

  • build: 编译包和依赖
  • clean: 移除对象文件
  • doc: 显示包或者符号的文档
  • env: 打印go的环境信息
  • bug: 启动错误报告
  • fix: 运行go tool fix
  • fmt: 运行gofmt进行格式化
  • generate: 从processing source生成go文件
  • get: 下载并安装包和依赖
  • install: 编译并安装包和依赖
  • list: 列出包
  • run: 编译并运行go程序
  • test: 运行测试
  • tool: 运行go提供的工具
  • version: 显示go的版本
  • vet: 运行go tool vet

参考文档

https://golang.org/doc/cmd

七、GO语言的依赖管理(重要)
1.依赖概述
依赖的概念
依赖管理的三个阶段:go path、govendor、go mod

2.使用gopath工作目录管理项目(了解)
在GOPATH下,会有三个子目录:src、pkg和bin(自行创建),它们分别对应着源代码、编译后的库和可执行文件。
在使用Go语言开发项目时,需要将项目代码放在GOPATH/src目录下,并且引用的第三方库也需要放在GOPATH下。

go env 查看 GO111MODULE 开关状态,off表示使用gopath管理,on表示使用go mod管理。auto表示自动管理,有mod文件按照mod文件,没有mod文件按照gopath管理。
go env -w GO111MODULE=on 

早期的go项目使用gopath来管理项目,三个文件夹需要手动创建,导入其他包都要放在该文件夹下,不方便而且容易出错,从 golang 1.11 开始使用gomod管理项目,当然还有第三方模块例如govendor。

~~Linux平台与mac平台安装
如果不是要在Linux平台敲go代码就不需要在Linux平台安装Go,我们开发机上写好的go代码只需要跨平台编译好之后就可以拷贝到Linux服务器上运行了,这也是go程序跨平台易部署的优势。

3.使用go mod来管理项目
高版本go项目已经不再依赖gopath来管理项目,使用go mod来管理项目。应用管理不在依赖 $GOPATH,可以在任意路径下创建项目。

A 流程步骤
a.设置go允许使用mod管理
go env 查看mod是否开启
go env -w GO111MODULE=on   (auto)

b.在项目目录下创建mod文件
go mod init 项目名
在本地创建自定义的包,导入时其路径是“项目目/包所在路径”。

~~配置代理
国外网站会因为墙的问题导致下载依赖包失败,可以设置 go proxy 代理访问,direct 是默认不通过代理直接访问。

gitlab 私有仓库不支持默认的 https 下载,使用时需要手动下载下来,-insecure 仅支持 go get,表示不校验 https。

go get -insecure gitlab.com/xxxx

B 导入外部包
gin package - github.com/gin-gonic/gin - Go Packages
go get -u github.com/gin-gonic/gin

下载modules到本地cache:保存路径 $GOPATH/pkg/
go mod get -u github.com/gin-gonic/gin
go mod download 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值