go语言核心编程笔记
golang简介
go=c+python
c语言的运行速度+python的快速开发
环境安装
官方镜像网址:https://golang.google.cn/dl/。
各个系统对应的包名:
| 操作系统 | 包名 |
|---|---|
| Windows | go1.4.windows-amd64.msi |
| Linux | go1.4.linux-amd64.tar.gz |
| Mac | go1.4.darwin-amd64-osx10.8.pkg |
| FreeBSD | go1.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,可以遍历字符串和数组