Go 语言入门(一)

news/2024/10/5 7:59:27/
Go Modules依赖包查找机制
  • 下载的第三方的依赖存储在 $GOPATH/pkg/mod
  • go install 生成的可执行文件存储在 $GOPATH/bin
  • 依赖查找顺序:
    • 工作目录
    • $GOPATH/pkg/mod
    • $GOPATH/src

一、Go语言基础

1.标识符与关键字

1.1 命名方式

​ go变量、常量、自定义类型、包、函数的命名方式必须遵循以下规则:

​ 首字符可以是任意Unicode字符下划线

​ 首字符之外的部分可以是Unicode字符、下划线或数字

​ 名字的长度无限制

理论上名字里可以有汉字,甚至可以全是汉字,但实际中不要这么做

1.2 关键字
breakdefaultfuncinterfaceselect
casedefergomapstruct
chanelsegotopackageswitch
constifrangetypecontinue
forimportreturnfallthroughvar
1.3 保留字

•常量

true false iota nil

•数据类型

int int8 int16 int32 int64

uint uint8 uint16 uint32 uint64

float32 float64

complex128 complex64

byte rune string

bool error uintptr

•函数

make len cap new append copy

close delete complex real imag panic recover

1.4变量
1.4.1 变量类型
类型Go变量类型fmt输出
整型int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64%d
浮点型float32 float64%f %e %g
复数complex128 complex64%v
布尔型bool%t
指针uintptr%d
引用map slice channel%v
字节byte%d
任意字符rune%d
字符串string%s
错误error%v
1.4.2变量初始化
  • 如果声明后未显式初始化,数值型初始化O,字符串初始化为空字符串,布尔型初始化为false,

    引用类型、函数、指针、接口初始化为nil

    • var a string=“china”
    • var a,b int=3,7
    • var a=“china”,类型推断
    • var a,b=“china”, 7
  • 函数内部的变量(非全局变量)可以通过:=声明并初始化

    • a:=3
  • 下划线表示匿名变量

    • _=2+4
  • 匿名变量不占命名空间,不会分配内存,因此可以重复使用

1.5常量

常量在定义时必须赋值,且程序运行期间其值不能改变

const PI float32=3.14const(PI=3.14E=2.71
)const(a=100b	//100,跟上一行的值相同c	//100,跟上一行的值相同
)const(a = iota	//0b					//1c					//2d					//3
)const(a = iota	//0b					//1_					//2d					//3
)const(a = iota	//0b	= 30		//30c	= iota	//2d					//3
)
1.6 字面量

字面量:没有出现变量名,直接出现了值。基础类型的字面量相当于是常量

不同的数据类型不能比较,但字面量例外

fmt.Printf("9t\n"04 ==4.00//用到了整型字面量和浮点型字面量
fmt.Printf("%v\n".4i//虚数字面量0.4i
fmt.Printf("%t\n", "\u4f17'=='//Unicode和rune字面量
fmt.Printf("Hello\ nWorld\n!\n"//字符串字面量
1.7 变量作用域
全局变量
var (A=3	//全局变量,大写字母开头,所有地方都可以访问,跨package访问时需要带上package名称b=4	//全局变量,小写字母开头,本package内都可以访问
局部变量
func fool{b:=5 //局部变量,仅本函数内可以访问。内部声明的变量可以跟外部声明的变量有冲突,以内部的为准{b:=6	//仅小圈定的作用域内可以访问,可以跟外部的变量有冲突}
1.8 注释 与 godoc
1.8.1 注释的形式
  • 单行注释。以//打头
  • 多行注释。连续多行以//打头,或者在段前使用 /* ,段尾使用 */
  • 多行注释之间不能出现空行
  • NOTE:引人注意,TODO:将来需要优化,Deprecated:变量或函数强烈建议不要再使用
  • 注释行前加缩进即可写go代码
1.8.2 注释的位置
  • 包注释。在package xxx的上方。一个包只需要在一个地方写包注释,通常会专门写一个doc.go,

    里面只有一行packagexxx和关于包的注释

  • 结构体注释。在type xxx struct上方

  • 函数注释。在func xxx()上方

  • 行注释。在行上方或右侧

1.8.3 go doc
  • go doc是go自带的命令
  • go doc entrance class/util
1.8.4 godoc
  • godoc可以为项目代码导出网页版的注释文档
    • 需要先安裝 go get golang.org/x/tools/cmd/godoc
    • 启动http:godoc -http=:6060
    • 用浏览器访问:http://127.0.0.1:6060/pkg/go-course/entrance class

http://www.ppmy.cn/news/1473557.html

相关文章

算法训练 | 图论Part4 | 107. 寻找存在的路径

目录 107. 寻找存在的路径 并查集法 107. 寻找存在的路径 题目链接&#xff1a;107. 寻找存在的路径 文章讲解&#xff1a;代码随想录 并查集法 代码一&#xff1a;并查集 #include <iostream> #include <vector> using namespace std;int n; // 节点数量 v…

pycharm如何使用jupyter

目录 配置jupyter新建jupyter文件别人写的方法&#xff08;在pycharm种安装&#xff0c;在网页中使用&#xff09; pycharm专业版 配置jupyter 在pycharm终端启动一个conda虚拟环境&#xff0c;输入 conda install jupyter会有很多前置包需要安装&#xff1a; 新建jupyter…

Canary,三种优雅姿势绕过

Canary&#xff08;金丝雀&#xff09;&#xff0c;栈溢出保护 canary保护是防止栈溢出的一种措施&#xff0c;其在调用函数时&#xff0c;在栈帧的上方放入一个随机值 &#xff0c;绕过canary时首先需要泄漏这个随机值&#xff0c;然后再钩爪ROP链时将其作为垃圾数据写入&…

【深度学习】AudioLM音频生成模型概述及应用场景,项目实践及案例分析

AudioLM&#xff08;Audio Language Model&#xff09;是一种基于深度学习的音频生成模型&#xff0c;它使用自回归或变分自回归的方法来生成连续的音频信号。这类模型通常建立在Transformer架构或者类似的序列到序列&#xff08;Seq2Seq&#xff09;框架上&#xff0c;通过学习…

【文献解析】Voxelmap——一种自适应体素地图

Efficient and Probabilistic Adaptive Voxel Mapping for Accurate Online LiDAR Odometry 论文地址&#xff1a;https://ieeexplore.ieee.org/stamp/stamp.jsp?tp&arnumber9813516 代码&#xff1a;GitHub - hku-mars/VoxelMap: [RA-L 2022] An efficient and probabili…

基于Hadoop平台的电信客服数据的处理与分析③项目开发:搭建基于Hadoop的全分布式集群---任务10:Hive安装部署

任务描述 任务内容为安装并配置在Hadoop集群中使用Hive。 任务指导 Hive是一个基于Hadoop的数据仓库框架&#xff0c;在实际使用时需要将元数据存储在数据库中 具体安装步骤如下&#xff1a; 1. 安装MySQL数据库&#xff08;已安装&#xff09; 2. 解压缩Hive的压缩包 3…

【OnlyOffice】桌面应用编辑器,插件开发大赛,等你来挑战

OnlyOffice&#xff0c;桌面应用编辑器&#xff0c;最近版本已从8.0升级到了8.1 从PDF、Word、Excel、PPT等全面进行了升级。随着AI应用持续的火热&#xff0c;OnlyOffice也在不断推出AI相关插件。 因此&#xff0c;在此给大家推荐一下OnlyOffice本次的插件开发大赛。 详细信息…

【LinuxC语言】手撕Http协议之accept_request函数实现(一)

文章目录 前言accept_request函数作用accept_request实现解析方法根据不同方法进行不同操作http服务器响应格式unimplemented函数实现总结前言 在计算机网络中,HTTP协议是一种常见的应用层协议,它定义了客户端和服务器之间如何进行数据交换。在这篇文章中,我们将深入探讨Li…