Go 语言入门(一)

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

一、Go语言基础

1.标识符与关键字

1.1 命名方式

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

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

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

​ 名字的长度无限制

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

1.2 关键字
break default func interface select
case defer go map struct
chan else goto package switch
const if range type continue
for import return fallthrough var
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常量

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

go 复制代码
const PI float32=3.14

const(
	PI=3.14
	E=2.71
)

const(
  a=100
  b	//100,跟上一行的值相同
  c	//100,跟上一行的值相同
)

const(
	a = iota	//0
  b					//1
  c					//2
  d					//3
)

const(
	a = iota	//0
  b					//1
  _					//2
  d					//3
)

const(
	a = iota	//0
  b	= 30		//30
  c	= iota	//2
  d					//3
)
1.6 字面量

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

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

go 复制代码
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 变量作用域
全局变量
go 复制代码
var (
  A=3	//全局变量,大写字母开头,所有地方都可以访问,跨package访问时需要带上package名称
	b=4	//全局变量,小写字母开头,本package内都可以访问
)
局部变量
go 复制代码
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
相关推荐
以卿a39 分钟前
C++ 模板初阶
开发语言·c++
s:10343 分钟前
【框架】参考 Spring Security 安全框架设计出,轻量化高可扩展的身份认证与授权架构
java·开发语言
道不尽世间的沧桑2 小时前
第17篇:网络请求与Axios集成
开发语言·前端·javascript
久绊A2 小时前
Python 基本语法的详细解释
开发语言·windows·python
软件黑马王子5 小时前
C#初级教程(4)——流程控制:从基础到实践
开发语言·c#
闲猫5 小时前
go orm GORM
开发语言·后端·golang
丁卯4046 小时前
Go语言中使用viper绑定结构体和yaml文件信息时,标签的使用
服务器·后端·golang
李白同学7 小时前
【C语言】结构体内存对齐问题
c语言·开发语言
黑子哥呢?8 小时前
安装Bash completion解决tab不能补全问题
开发语言·bash
青龙小码农8 小时前
yum报错:bash: /usr/bin/yum: /usr/bin/python: 坏的解释器:没有那个文件或目录
开发语言·python·bash·liunx