Go语言简介

一.Go语言简介

1.1 优点

  • 自带gc
  • 静态编译,编译好后,扔服务器直接运行
  • 简单思想,没有继承,多态和类等
  • 丰富的库和详细开发文档
  • 语法层支持并发,和拥有同步并发的channel类型,使并发开发变得非常方便
  • 简洁语法,提高开发效率,同时提高代码的阅读性和可维护性
  • 超级简单的交叉编译,仅需修改环境变量

1.2 主要特征

  • 自动立即回收
  • 更丰富的内置类型
  • 函数多返回值
  • 错误处理
  • 匿名函数和闭包
  • 类型和接口
  • 并发编程
  • 反射
  • 语言交互性

1.3 Golang文件名

所有的go源码都以".go"结尾

1.4 Go语言命名

  • Go的函数,变量,常量,自定义类型,包(package)的命名方式遵循以下规则:
  1. 首字符可以是任意字符或者下划线

  2. 剩余字符可以是字符,下划线和数字

  3. 字符长度不限

  • 25个关键字
  • 37个保留字
  • 可见性
  1. 声明在函数内部,是函数的本底值,类似private

  2. 声明在函数外部,是对当前包可见(包内所有.go文件可见)的全局值,类似protect

  3. 声明在函数外部且首字母大写是所有包可见的全部值,类似public

1.5 Go语言声明

有四种主要声明方式:

var(声明变量),const(声明常量),type(声明类型),func(声明函数)

Go程序是保存在多个.go文件中,文件的第一行就是package xxx声明,用来说明该文件属于哪一个包(package),package声明下来就是import声明,再下来是类型,变量,常量,函数的声明。

1.6 Go项目构建及编译

一个Go工程中主要包含以下三个目录:

  1. src:源代码文件

  2. pkg:包文件

  3. bin:相关bin文件

  • 建立工程文件go
  • 在工程文件下建立src,pkg,bin文件夹
  • 在GOPATH环境变量中添加工程文件路径

go env查看环境变量:set GOPATH=D:\go

  • 在src文件夹下编写主程序代码project.go
  • 在src文件夹下建立自己的包examplepackage文件夹
  • 在examplepackage文件夹中编写examplepackage.go和examplepackage_test.go
  • 编译调试包
  • 编译主程序

1.7 go编译问题

golang的编译使用命令go build, go intall;除非仅写一个main函数,否则还是准备好目录结构,GOPATH=工程根目录;其下创建src,pkg,bin目录,bin目录用于生成可执行文件,pkg目录用于生成.a文件,golang中的import name,实际就是到GAPATH中去寻找name.a,使用时是该name.a源码中声明的package名字。

例如:import exampletest,会在pkg目录下查找exampletest.a文件,由于exampletest生命的packge名文exampletest,其他项目中使用exampletest中的类型或函数等,需要通过"exampletest.名字"使用。

注意点:

  1. 系统编译时go intsall abc_name时,系统会到GOPATH的src目录中寻找abc_name目录,然后编译其下的所有go文件。

  2. 同一个目录下的所有go文件的package声明必须相同,所以main方法要单独放到一个文件,否则在eclipse和liteide(go语言集成开发环境,使用的IDE)中都会报错。

  1. 对于main方法只能在bin目录下运行,go build path_tomain.go;可以使用-o参数指出输出文件名。go build -o "输出文件" 编译文件。
  1. 可以添加参数go build -gcflags "-N -l" *****,可以更好的便于gdb。详见https://golang.org/doc/gdb

  2. gdb全局变量注意点:如有全局变量a;则写成 p 'main.a';注意单引号不能少。

相关推荐
llwszx6 小时前
【Java/Go后端手撸原生Agent(第九篇):Plan-and-Execute规划模式——从“走一步看一步“到“先谋后动“】
java·python·golang·agent开发·plan模式·规划执行模式
灯澜忆梦8 小时前
GO_网络编程---文件传输实战
网络·golang·php
北冥you鱼10 小时前
Go 语言新手扫盲:指针 * 和 & 使用场景详解
开发语言·后端·golang
Wang's Blog12 小时前
Go-Zero项目开发17: IM私聊功能实现与消息存储设计
开发语言·后端·golang
名字还没想好☜13 小时前
Go 的 select 实战:超时、非阻塞收发与优雅退出的三个套路
开发语言·数据库·golang·go·并发
编程序的员14 小时前
使用OpenTelemetry来监控GoLang应用
运维·golang·monitoring·apm·opentelemetry
ttwuai1 天前
Cursor 生成 CRUD 后,Go 后台接口别只测 200:JWT、RBAC 和 tenant_id 怎么验
开发语言·后端·golang
布朗克1681 天前
Go 入门到精通-31-编码与序列化
开发语言·qt·golang·编码与序列化
microrain1 天前
从硬编码到热插拔:SagooIoT插件架构如何打破物联网平台的扩展瓶颈
物联网·golang·开源·sagooiot
geovindu1 天前
go:Backtracking Algorithm
开发语言·后端·算法·golang·回溯算法