-
gofmt:统一的代码风格
查看全部 -
内置runtime,性能监控和GC
查看全部 -
iota只能在常量定义时候使用,不可以在别的函数里使用
iota跳值使用法:
原来的定义:
const(
a=iota//a=0
b=iota//b=1
c=iota//c=2
)
如果想将c变为3,可以用"_"(变量声明的时候它相当于垃圾桶,常量iota使用的时候它具有使iota加1的功能)
const(
a=iota//a=0
b=iota//b=1
_
c=iota//c=3
)
插队使用法:
const(
a=iota//a=0
b=2
c=iota//c=1
)
就是说不连续用iota赋值,中间插入另外的常量,这就是插队使用法
表达式隐式使用法:
const(
a=iota*2//a=0
b //b自动被赋值为iota*2==1*2==2
c //b自动被赋值为iota*2==2*2==4
)
没有赋值表达式的时候,会被自动赋值为上面遇到的第一个表达式
单行使用法:
const(
a,b=iota,iota+3//a=0,b==0+3==3
c,d //c=iota==1,d=iota+3==1+3==4
f=iota //f==iota==2
)
注意是每一行,iota只加1,不管这一行声明了多少常量查看全部 -
常量也可以单行声明并赋值:
const apple,banana string=”苹果“,”香蕉“
const a,b=1,"你好"(隐式声明常量会自动识别数据类型)
UTF8每个汉字占三个字节大小查看全部 -
常量的定义充形式上可分为显示和隐式:
显示:const identifier [type] =value
隐式 :const identifier =value(通常叫无类型常量)
常量可以提使用内置表达式定义:如:len(),unsafe.Sizeof()等
常量范围目前只支持布尔型、数字型、(整数型、浮点型和复数)和字符串型查看全部 -
var a,b,c int =1,2,3 可以变成 var a,b,c =1,2,3 (省略类型) 还可以变成 a,b,c :=1,2,3(省略掉var)
不过要注意的是:var只能在函数体内做局部变量时省略,而数据类型都可以省略
"_"相当于一个垃圾桶,把不要的值丢到垃圾桶里查看全部 -
单个变量的声明和赋值:
1.变量的声明格式:var<变量名称>[变量类型]
2.变量的赋值格式:<变量名称>=<值,表达式,函数等>
3.声明和赋值同时进行:var<变量名称>[变量类型]=<值,表达式,函数等>
4.分组声明格式:
var(
i int
j float32
name string
)
同一行声明多个变量和赋值:var a,b,c int =1,2,3 或者a,b:=1,2
全局变量的声明必须使用var关键字,局部变量则可以省略
特殊变量下划线"_"
go中不存在隐式转换,类型转换必须是显式的
类型转换只能发生在两种兼容类型之间
类型转换格式:<变量名称>[:]=<目标类型>(<需要转换的变量>)
大写字母开头的变量是可导出的,也就是其他包可读取的,是公用变量:
小写字母开头的就是不可导出的,是私有变量查看全部 -
数据类型:
数值类型,字符类型和布尔类型;
派生类型;
类型零值和类型别名
类型所占存储大小
数据类型:
整形、浮点型、复数、字符串、和布尔型
数据内存的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存。
布尔的值只可以是常量true或者false
字符串类型string,统一编码为“UTF-8”.
uint8;无符号8位整型
uint16;无符号16位整型
uint32;无符号32位整型
uint64;无符号64位整型
int8;有符号8位整型
int16;有符号16位整型
int32;有符号32位整型
int64;有符号64位整型
float32 32位浮点型数
float64 84位浮点型数
complex64 32位实数和虚数
complex128 64位实数和虚数
byte 类似uint8
rune 类似int32
uint 32位或64位(具体大小根据每个计算机的操作系统大小来定)
int 与uint一样大小
uintptr 无符号整型,用于存放一个指针
派生类型:
指针类型(pointer)
数组类型
结构化类型(struct)
Channel类型(chan)
函数类型(func)
切片类型(slice)
接口类型(interface)
Map类型(map)
类型零值和类型别名:
类型零值不是空值,而是某个变量被声明后的默认值,一般情况下,值类型默认值为0,布尔型默认值为false,string默认值为空字符串(就是什么也没有);
我们可以对类型设置别名,但是别名和原数据类型的类型不一样,比如说type 别名 int16 (这时用别名定义的变量和用int16定义的变量不可以一起运算,而全部用别名定义的变量可以)查看全部 -
import别名,“.”,"_"
别名操作的含义是:将导入的包命名为另一个容易记忆的别名
点(.)操作的含义是:点(.)标识的包导入后,调用该包中函数时可以省略前缀包名;
下划线(_)操作的含义是:导入该包,但不导入整个包,而是执行该包中的init函数,因此无法通过包名来调用包中其他的函数。使用下划线(_)操作往往是为了注册包里的引擎,让外部可以方便地使用;
查看全部 -
import 的基本原理:
如果一个main导入其他包,包将被顺序导入
如果导入的包中以来其他包(包B),会首先导入B包,然后初始化B包中的常量与变量,最后如果B中有init,会自动执行initial();
所有包到入完成之后才会对main中常量和变量进行初始化,然后执行main中的init函数(如果存在),最后执行main函数;
如果一个包被导入多次则该包只会被导入一次;查看全部 -
const
查看全部 -
语言学习查看全部
-
1
查看全部 -
https://golang.org这个网址在国内应该不好打开,学习的同学,可以转go语言中文网,网址:https://studygolang.com
查看全部 -
gofmt
查看全部
举报