From 87c6ea856a28fe8b93fe6767b8977796691d3167 Mon Sep 17 00:00:00 2001 From: wangtunan Date: Wed, 26 Jun 2024 22:58:05 +0800 Subject: [PATCH] =?UTF-8?q?golang=20go=E5=9F=BA=E7=A1=80=E6=92=B0=E5=86=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/settings.json | 10 +++ docs/.vuepress/configs/nav.js | 2 +- docs/golang/base/README.md | 117 +++++++++++++++++++++++++++++++++- 3 files changed, 127 insertions(+), 2 deletions(-) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000..ef302d389 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,10 @@ +{ + "cSpell.words": [ + "vuepress", + "leetcode", + "wangtunan", + "Gorm", + "gorm", + "instanceof" + ] +} \ No newline at end of file diff --git a/docs/.vuepress/configs/nav.js b/docs/.vuepress/configs/nav.js index cff8497e9..fbe934d62 100644 --- a/docs/.vuepress/configs/nav.js +++ b/docs/.vuepress/configs/nav.js @@ -122,7 +122,7 @@ const booksNav = [ // golang导航 const golangNav = [ { - text: 'Golang', + text: 'Golang技术栈', children: [ { text: 'Go基础', diff --git a/docs/golang/base/README.md b/docs/golang/base/README.md index 58fcda092..1a75aed6c 100644 --- a/docs/golang/base/README.md +++ b/docs/golang/base/README.md @@ -3,4 +3,119 @@ sidebar: auto --- # Go基础 -Go基础 \ No newline at end of file + +## 约定规则 +Go中有一些约定的规则: +* 每个`.go`文件必须有一个包名,例如`package main`,其中`main`即为包名。 +* 严格区分大小写,大写开头的变量、常量或者方法可跨包访问。 +* 双引号代表字符串,单引号代表字符,例如:`"abc"`和`'a'`。 +* 不需要写分号。 + +## 注释 +```go +package main +/* + 这是一个main函数的多行注释 + 多行注释 + 多行注释 +*/ +func main() { + // 这是单行注释 + fmt.Print("main") +} +``` + +## 变量和常量 +变量和常量分别使用`var`和`const`关键词来定义。 + +### 定义方式 +`var`变量定义方式如下: +```go +var v1 int // 变量名 + 指明类型 +var v2 int = 2 // 变量名 + 指明类型 + 初始值 +var v3 = 3 // 变量名 + 初始值(自动推导类型) +v1 = 1 // 仅赋值 +v4 := 4 // 不需要关键词且自动推导类型(推荐) + +// 使用括号定义多个变量 +var ( + v5 = 5 + v6 int + v7 int = 7 +) +``` +`const`常量定义方式如下: +```go +const v1 int = 1 // 常量名 + 指明类型 + 初始值 +const v2 = 2 // 常量名 + 初始值(自动推导类型) +v3 := 3 // 不需要关键词且自动推导类型(推荐) + +// 使用括号定义多个常量 +const ( + v4 = 4 + v5 int = 5 +) +``` + +### 全局变量(常量) +在`.go`文件中,定义在最外层的变量、常量,在整个文件中都可以使用,它们叫这个包的全局变量(常量)。 +```go +var mainGlobalVar = "global" + +func main() { + fmt.Printf("global var is %s", mainGlobalVar) +} +``` + +### 跨包变量(常量) +跨包变量(常量),必须满足以下两个条件: +* 为全局变量(常量)。 +* 必须大写开头,小写开头的变量(常量)被认为是这个包的私有变量(常量),不能被访问。 + +`math/math.go`文件代码: +```go +package goMath + +const PI = 3.1415926 + +func main() { + +} +``` + +`main.go`文件代码: +```go +package main + +import ( + "fmt" + goMath "go-learn/math" +) + +func main() { + fmt.Printf("pi var is %f", goMath.PI) +} +``` + +## 基本数据类型 +`Go`中,如果定义变量时没有赋初始值,则会根据其具体类型赋默认值。 + +`bit`:比特位,二进制中的一位,信息的最小单位。 +`byte`: 字节,1 byte = 8 bit。 + +### 整数型 +分为有符号和无符号整数两种,例如:`int`(有符号),`uint`(无符号)。 + +有符号和无符号的区别时,有符号整数第一个`bit`位会用来存放正负符号(0表示正数,1表示负数),所以它所表示的最大数字要比无符号的整数要小。 +* 有符号:`00000101`,十进制`5`; `10000101`,十进制`-5`。 +* 无符号:`00000101`,十进制`5`; `10000101`,十进制`133`。 + +### 浮点型 + +### 字符型 + +### 布尔型 + +### 字符串型 + +## 指针 \ No newline at end of file