一、基本介绍
1. 环境配置:
GOROOT:指定go sdk的安装目录,sdk是软件开发工具包;
GOPATH:golang的工作目录,源码都放在这个目录下面;
Path:sdk/bin下,如go.exe,godoc.exe,gofmt.exe
2. 编译:go build 源文件; 运行:go run 源文件;
3. 注意事项:
1)go代码严格区分大小写;
2)语句结尾不用写分号;
3)定义的变量及import的包,必须要使用,否则会报错;
4)不可把多条语句放在同一行,因为编译时默认在行尾加分号;
5)注意拼写错误,如文件名、路径写错等等;
6)import前的下划线'_',表示忽略这个包;
7)变量前'_'用于忽略这个接收的返回值参数;
8)如果变量名、函数名、常量名首字母大写代表共有,小写代表私有,没有public,private关键字,就是通过首字母是否大小来控制(比如引用其他自定义包的变量函数等)。
二、数据类型之字符(串)、布尔
- go语言中,字符类型用byte表示,0-255(ASCII码表对应的所有字符都可以表示);
- 如果超过255,如中文汉字,则需要用int来表示,可以表示到65535的码值;
- 字符(包括中文字符)的存储方式是,字符 -> 对应编码值(如21271)-> 转换为二进制 -> 存储;
- bool类型(只能是true和false,不能是1,-1这些来表示)只占一个字节,可用unsafe.sizeof(bool值)来测类型占用的字节大小,默认是false;
- 字符串的输出,可以使用``来输出类似代码块的文本;
- 如果需要做字符串的拼接,需要将+这个连接符号放在行尾去连接下一行;
- 格式化输出:
%v:按原值输出
三、数据类型转换
1、func Sprint(format string, a …interface{})
string中的a …interface{}表示空接口,可以接收任何类型的参数;
2、格式化输出,%q表示按字符串类型输出,并且自动加上" ";
3、格式化转换也可以使用strconv这个包里的函数,如strconv.FormatInt, strconv.Float等;
strconv.Float(num4, ‘f’, 10, 64); //‘f’:格式,10:小数保留位,64:小数是float64
4、string转基本类型(如int、float、bool),如果是不能转的,直接默认转为0或false;
5、go文件里的包名应该和所在的文件夹名字保持一致;
四、数据类型分类
1、值类型:int系列、float系列、bool、string、数组和结构体struct;
2、引用类型:指针、slice切片、map、管道chan、接口inferface等;
3、指针本身也有地址,只是它存的也是地址;
4、通常情况下,值类型放在栈区,引用类型放在堆区,GC垃圾回收就是回收堆区的内存;
5、由于go的逃逸分析,会在编译时决定到底要放在栈区还是堆区,如果使用的时间长,那么一般会放到堆区;