go语言核心编程笔记

golang简介

go=c+python

c语言的运行速度+python的快速开发

环境安装

官方镜像网址:https://golang.google.cn/dl/。

各个系统对应的包名:

操作系统包名
Windowsgo1.4.windows-amd64.msi
Linuxgo1.4.linux-amd64.tar.gz
Macgo1.4.darwin-amd64-osx10.8.pkg
FreeBSDgo1.4.freebsd-amd64.tar.gz

windows

下载msi直接下一步安装

查看版本信息

go version

环境变量

go1.11版本后无需手动配置环境变量,使用go mod管理项目,

开发工具

vscode

go插件提示代码

插件安装失败

1.科学上网

2.手机热点

3.多试几次

常见报错

go 运行错误expected ‘package’, found ‘EOF’解决

只要将文件保存一下,再运行就ok了。

常用包

package fmt

import "fmt"

mt包实现了类似C语言printf和scanf的格式化I/O。格式化动作(‘verb’)源自C语言但更简单。

Printing

verb:

通用:

%v	值的默认格式表示
%+v	类似%v,但输出结构体时会添加字段名
%#v	值的Go语法表示
%T	值的类型的Go语法表示
%%	百分号

布尔值:

%t	单词true或false

整数:

%b	表示为二进制
%c	该值对应的unicode码值
%d	表示为十进制
%o	表示为八进制
%q	该值对应的单引号括起来的go语法字符字面值,必要时会采用安全的转义表示
%x	表示为十六进制,使用a-f
%X	表示为十六进制,使用A-F
%U	表示为Unicode格式:U+1234,等价于"U+%04X"

浮点数与复数的两个组分:

%b	无小数部分、二进制指数的科学计数法,如-123456p-78;参见strconv.FormatFloat
%e	科学计数法,如-1234.456e+78
%E	科学计数法,如-1234.456E+78
%f	有小数部分但无指数部分,如123.456
%F	等价于%f
%g	根据实际情况采用%e或%f格式(以获得更简洁、准确的输出)
%G	根据实际情况采用%E或%F格式(以获得更简洁、准确的输出)

字符串和[]byte:

%s	直接输出字符串或者[]byte
%q	该值对应的双引号括起来的go语法字符串字面值,必要时会采用安全的转义表示
%x	每个字节用两字符十六进制数表示(使用a-f)
%X	每个字节用两字符十六进制数表示(使用A-F)    

指针:

%p	表示为十六进制,并加上前导的0x    

原码 补码 反码

对于有符号的数而言,

  • 二进制的最高位是符号位,0表示正数,1表示负数。
  • 正数的原码,反码,补码都一样
  • 负数的反码=它的原码符号位不变,其他位取反
  • 负数的补码=它的反码+1
  • 0的反码,补码都是0
  • 在计算机运算的时候,都是以补码的方式来运算的。

Golang中有两个移位运算符:

〉〉 〈〈右移和左移,运算规则:

右移运算符〉〉,低位溢出,符号位不变,并用符号位补溢出的高位

左移运算符〈〈,符号位不变,低位补0

第五章 程序流程控制

三大控制语句

1.顺序控制

2.分支控制

Switch的执行流程是,先执行表达式,得到值。然后和case的表达式进行比较,如果相等,就匹配到。然后执行对应的case语句块,然后退出swtich控制。。

如果switch的表达式的值没有和任何的case表达式匹配成功,则执行default的语句块。执行后退出swtich流程。

golang的case后的表达式可以有多个。逗号隔开。

golang中的case语句块不需要写break,因为默认就有。即在默认情况当程序执行完case语句块后,就直接退出该switch

switch注意事项和细节

switch和case后是一个表达式(常量,变量,一个有返回值的函数都可以)

case后的个个表达式的值的数据类型,必须和switch的表达式数据类型一致

case后可以带多个表达式,使用逗号间隔。

case后面的表达式如果是常量值,则要求不能重复。

golang中的case语句块不需要写break,因为默认就有。即在默认情况当程序执行完case语句块后,就直接退出该switch

default不是必须的。

switch可以不带表达式,类似于if else

switch后也可以直接声明/定义一个变量,分号结束,不推荐。

switch穿透fallthough,如果在case语句后增加fallthough,则会继续执行下一个case,也叫switch穿透

Typeswitch:switch语句还可以被用于type-swtich来判断某个interface变量中实际指向的变量类型。

switch和if区别

如果判断的具体数值不多,用swtich语句简洁高效。

其他情况,对区间判断或结果为bool,if使用更广。

3.循环控制

for循环控制
for循环使用注意事项和细节讨论。

循环条件是返回一个布尔值的表达式

for循环的第二种使用方式,变量初始化和变量迭代写到其他位置。

for循环的第三种使用方式,通常配合break使用。

For-range,可以遍历字符串和数组