GO的探索chapter 1
Go的环境安装去Go官网
然后设置环境变量和变量路径
工具开始用的是VScode

第一个程序:
package main//封装主函数
import "fmt"
func main(){
fmt.Println("hello world")
}
$go run helloworld.go 编译一个或者多个以go结尾的源文件
毫无意外,这个命令会输出:
Hello, 世界
$ go build helloworld.go
命令生成一个名为helloworld的可执行二进制文件,window下为exe
可以随时运行不需要任何处理
$./helloworld
输出结果;Hello,world
。每个源文件都以一条package声明语句开始,这个例子里就是package main,表示该文件属于哪个包,紧跟着一系列导入(import)的包,之后是存储在这个文件里的程序语句。
Go的标准库提供了100多个包,以支持常见功能,如输入、输出、排序以及文本处理。比如fmt包,就含有格式化输出、接收输入的函数。Println是其中一个基础函数,可以打印以空格间隔的一个或多个值,并在最后添加一个换行符,从而输出一整行。
Prinln自动换行
须告诉编译器源文件需要哪些包,这就是跟随在package声明后面的import声明扮演的角色。
hello world例子只用到了一个包,大多数程序需要导入多个包。
在package后声明导入哪一个包
import声明必须在package之后
Go语言不需要在语句或者声明的末尾添加分号
Go语言不需要在语句或者声明的末尾添加分号,除非一行上有多条语句。实际上,编译器会主动把特定符号后的换行符转换为分号,因此换行符添加的位置会影响Go代码的正确解析(译注:比如行末是标识符、整数、浮点数、虚数、字符或字符串文字、关键字break、continue、fallthrough或return中的一个、运算符和分隔符++、--、)、]或}中的一个)。举个例子,函数的左括号{必须和func函数声明在同一行上,且位于末尾,不能独占一行,而在表达式x + y中,可在+后换行,不能在+前换行(译注:以+结尾的话不会被插入分号分隔符,但是以x结尾的话则会被分号分隔符,从而导致编译错误)。
golang的代码格式化工具gofmt
Go言里也采用左闭右开形式,即,区间包括第一个索引元素,不包括最后一个,因为这样可以简化逻辑。(译注:比如a = [1, 2, 3, 4, 5], a[0:3] = [1, 2, 3],不包含最后一个元素)。比如s[m:n]这个切片,0 ≤ m ≤ n ≤ len(s),包含n-m个元素。
os包以跨平台的方式,提供了一些与操作系统交互的函数和变量。程序的命令行参数可从os包的Args变量获取;os包外部使用os.Args访问该变量。
已导出名的首字母是大写的,在导入一个包的时候,只能引用其中已经导出的名字,任何未导出的名字在该
包外均无法访问
VCS通过git从GitHub等直接克隆一个
Gopath在gopath下面创建项目
ctrl +alt +s
就是打开设置的快捷键
Login可以自动导包

Atl+1切换浏览窗口:切换大小窗口,挺实用的快捷键
(
Go's Declaration Syntax 声明语法
Refactor反射
VCS版本控制系统
Version control system
)

重置成以前的窗口
额外的插件在设置的plugins里面
plugins即插件

协议方面的
Gopath工作路径
go env:Go modules

最常用的终端:输入命令 go run go build之类的
可以有多个窗口和终端

Alt+f12打开终端
清屏claer

调试:
Run-debug




输入模板
例如fori 快速输出关于for i的模板 加快速度;
感觉有必要了解一些模板更方面

Ctrl+W快速关闭当前窗口(设置)
Keymap快捷键
Close tabs快捷键设置(同时按住ctrl+w增加这一快捷键选项)


添加一个快捷方式关闭当前标签页的

Ctrl+/
快速注释到选中的代码
导包
Termi:go get
或者点击红色的地方让它同步
变量
var 语句用于声明一个变量列表,跟函数的参数列表一样,类型在最后。
就像在这个例子中看到的一样,var 语句可以出现在包或函数级别。


Unicode
n.采用双字节对字符进行编码;统一的字符编码标准
好用的快捷键设置:
close tabs: ctrl+w
Alt+1 :切换大小窗口
ctrl+Alt+S:设置
下了个Sinpaste作为截图工具感觉很轻便实用
F1直接截图
还有就是goland里面 keyboard的插件挺好用
的,可以根据你的使用频率提供相关的快捷键记录
%T
%T输出变量类型,看数字的精度
Unicode
n.采用双字节对字符进行编码;统一的字符编码标准
Unicode


https://studygolang.com/articles/2644(关于占位符的了解)
Go的一些占位符的表示:
%v 相应值的默认格式。 Printf("%v", people) {zhangsan},
%+v 打印结构体时,会添加字段名 Printf("%+v", people) {Name:zhangsan}
%#v 相应值的Go语法表示 Printf("#v", people) main.Human{Name:"zhangsan"}
%T 相应值的类型的Go语法表示 Printf("%T", people) main.Human
%% 字面上的百分号,并非值的占位符 Printf("%%")
布尔占位符占位符 说明 举例 输出%t true 或 false。 Printf("%t", true) true
整数占位符
占位符 说明 举例 输出
%b 二进制表示 Printf("%b", 5) 101(binary)
%c 相应Unicode码点所表示的字符 Printf("%c", 0x4E2D) 中
(Unicode)
%d 十进制表示 Printf("%d", 0x12) 18
(decimal)
%o 八进制表示 Printf("%d", 10) 12
%q 单引号围绕的字符字面值,由Go语法安全地转义 Printf("%q", 0x4E2D) '中'
%x 十六进制表示,字母形式为小写 a-f Printf("%x", 13) d
%X 十六进制表示,字母形式为大写 A-F Printf("%x", 13) D
%U Unicode格式:U+1234,等同于 "U+%04X" Printf("%U", 0x4E2D) U+4E2D
浮点数和复数的组成部分(实部和虚部)
占位符 说明 举例 输出
%b 无小数部分的,指数为二的幂的科学计数法,
与 strconv.FormatFloat 的 'b' 转换格式一致。例如 -123456p-78
%e 科学计数法,例如 -1234.456e+78 Printf("%e", 10.2) 1.020000e+01
%E 科学计数法,例如 -1234.456E+78 Printf("%e", 10.2) 1.020000E+01
%f 有小数点而无指数,例如 123.456 Printf("%f", 10.2) 10.200000
%g 根据情况选择 %e 或 %f 以产生更紧凑的(无末尾的0)输出 Printf("%g", 10.20) 10.2
%G 根据情况选择 %E 或 %f 以产生更紧凑的(无末尾的0)输出 Printf("%G", 10.20+2i) (10.2+2i)
字符串与字节切片
占位符 说明 举例 输出
%s 输出字符串表示(string类型或[]byte) Printf("%s", []byte("Go语言")) Go语言
%q 双引号围绕的字符串,由Go语法安全地转义 Printf("%q", "Go语言") "Go语言"
%x 十六进制,小写字母,每字节两个字符 Printf("%x", "golang") 676f6c616e67
%X 十六进制,大写字母,每字节两个字符 Printf("%X", "golang") 676F6C616E67
golang没有 '%u' 点位符,若整数为无符号类型,默认就会被打印成无符号的。
宽度与精度的控制格式以Unicode码点为单位。(什么意思)
它从 0 开始,为每个符号指定一个编号,这叫做”码点”(code point)。比如,码点 0 的符号就是 null(表示所有二进制位都是 0)。
U+0000 = null
上式中,U+表示紧跟在后面的十六进制数是 Unicode 的码点。
码点又是什么?
(寻求答案:https://liyucang-git.github.io/2019/06/17/%E5%BD%BB%E5%BA%95%E5%BC%84%E6%87%82Unicode%E7%BC%96%E7%A0%81/)
宽度为该数值占用区域的最小宽度;精度为小数点之后的位数。
操作数的类型为int时,宽度与精度都可用字符 '*' 表示。
对于 %g/%G 而言,精度为所有数字的总数,例如:123.45,%.4g 会打印123.5,(而 %6.2f 会打印123.45)。
%e 和 %f 的默认精度为6
现代编码模型
在现代编码模型里要知道一个字符如何映射成计算机里比特,需要经过如下几个步骤:
知道一个系统需要支持哪些字符,这些字符的集合被称为字符表(Character repertoire)给字符表里的抽象字符编上一个数字,也就是字符集合到一个整数集合的映射。这种映射称为编码字符集(CCS:Coded Character Set),unicode 是属于这一层的概念,跟计算机里的什么进制啊没有任何关系,它是完全数学的抽象的。
将 CCS 里字符对应的整数转换成有限长度的比特值,便于以后计算机使用一定长度的二进制形式表示该整数。这个对应关系被称为字符编码表(CEF:Character Encoding Form)UTF-8, UTF-16 都属于这层。
UTF-8
UTF-8 是一个非常惊艳的编码方式,漂亮的实现了对 ASCII 码的向后兼容,以保证 Unicode 可以被大众接受。
UTF-8 是目前互联网上使用最广泛的一种 Unicode 编码方式,它的最大特点就是可变长。它可以使用 1 - 4 个字节表示一个字符,根据字符的不同变换长度。编码规则如下:
对于单个字节的字符,第一位设为 0,后面的 7 位对应这个字符的 Unicode 码点。因此,对于英文中的 0 - 127 号字符,与 ASCII 码完全相同。这意味着 ASCII 码那个年代的文档用 UTF-8 编码打开完全没有问题。
对于需要使用 N 个字节来表示的字符(N > 1),第一个字节的前 N 位都设为 1,第 N + 1 位设为 0,剩余的 N - 1 个字节的前两位都设位 10,剩下的二进制位则使用这个字符的 Unicode 码点来填充。
%T
%T输出变量类型,看数字的精度


JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。易于人阅读和编写,可以在多种语言之间进行数据交换 [5]
理解为数据交换格式,可以在多种语言之间进行数据交换。

浙公网安备 33010602011771号