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访问该变量。

已导出名的首字母是大写的,在导入一个包的时候,只能引用其中已经导出的名字,任何未导出的名字在该
包外均无法访问

 

编写--
终端terminal 创建执行文件--即exe
终端可以直接执行
安全命令是.\hello
阅读文档的话可以一步步看
就是用划词翻译
对不懂的单词逐步翻译到克服理解问题
 
ctrl +alt +s
就是打开设置的快捷键
 
但是感觉不是很好用
一些运行的指令和文档的不一样
然后去知乎找了一下,了解到了jerbrain系列的goland
是go开发的专业软件
然后就去下了一个goland选择try trial试用三十天
购买的话
正版途径淘宝便宜一些,激活码是最便宜的,免费的就是补丁
感觉如果一直要用的话40块一年充值自己账号就比较好一点
 
https://books.studygolang.com/gopl-zh/
这个文档作为初学者太生草了
看的很无聊和很迷
然后去找了Go官方的中文版基础教学
跟着代码一边在goland上敲即可
https://go-zh.org/  毕竟实践是加深记忆的最好方法
还有就是理解逻辑
 
goland怎么用看了b站郭宏志的视频最清晰

 

 

 

VCS通过gitGitHub等直接克隆一个

 

Gopathgopath下面创建项目

ctrl +alt +s

就是打开设置的快捷键

Login可以自动导包

 

 

Atl+1切换浏览窗口:切换大小窗口,挺实用的快捷键

 

 (

Go's Declaration Syntax  声明语法

 

Refactor反射

 

VCS版本控制系统

 

Version control system

 

重置成以前的窗口

额外的插件在设置的plugins里面

plugins即插件

 

 

协议方面的

 

Gopath工作路径

 go envGo modules

 

 

 

 最常用的终端:输入命令 go run go build之类的

 

可以有多个窗口和终端

 

 

Alt+f12打开终端

清屏claer

 

 

 

 

调试:

Run-debug

 

 

 

 

 

 

 

 

 

输入模板

例如fori 快速输出关于for i的模板 加快速度;

感觉有必要了解一些模板更方面

 

 

 

Ctrl+W快速关闭当前窗口(设置)

 

Keymap快捷键

 

Close tabs快捷键设置(同时按住ctrl+w增加这一快捷键选项)

 

 

 

 

 

 

 

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

 

 

 

Ctrl+/

 

快速注释到选中的代码

导包

Termigo 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)             101binary

 

%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]  

 

理解为数据交换格式,可以在多种语言之间进行数据交换。

 

 

 

 

 

posted @ 2022-07-05 21:11  Fantastic-Marmot  阅读(42)  评论(1)    收藏  举报