1、go数据类型
常用类型:
布尔类型: true,false
数字类型:
unit8[u代表无符号unsingal],unit16,unit32,unit64
int8,int16,int32,int64
float32,float64,complex64,complex128
字符串类型:[考虑字符串连接方式]
派生类型:
指针
数组
结构化
channel
函数
切片
接口
map
2、变量:
第一种:指定变量类型 var name string
第二种: 自行判定 var name= "aaaa"
第三种: c := "bbb",变种a, b, c := 5, 7, "abc"
多变量声明:
var a,b,c,d int
var(
a int
b int32
c int8
d int 64
)
3、常量:
显示定义 const str string = 'abc'
隐式定义 const str = 'abc'
多相同类型定义const str,str1,str2 = 'abc','bcd','edf'
枚举 const(
unknown=0
famle=1
)
iota 在const中从0开始自增
4、运算符
运算符 描述 实例
& 返回变量存储地址 &a; 将给出变量的实际地址。
* 指针变量。 *a; 是一个指针变量
5、条件语句
if
if{}else{}
switch type:
case 1:
case 2:
select:类似于switch随机实现一个case
6、循环语句
for true {无线循环}
7、函数
//定义
func max(a,b int) int{}
//调用
a,b := 10,11
max(a,b)
返回多个值
func max(a,b int) (int,int){return a,b}
//调用
a,b := 10,11
max(a,b)
8、变量作用域
变量分为:全局变量、局部变量、形参
Go 语言程序中全局变量与局部变量名称可以相同,但是函数内的局部变量会被优先考虑
9、数组
数组定义 var name [10] string
数组初始化 var name = [2]string{"hello","world} 初始化数组中 {} 中的元素个数不能大于 [] 中的数字
如果忽略 [] 中的数字不设置数组大小,Go 语言会根据元素的个数来设置数组的大小:var balance = [...]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
多维数组:
数组定义:var threedim [5][10][4]int
a = [3][4]int{
{0, 1, 2, 3} , /* 第一行索引为 0 */
{4, 5, 6, 7} , /* 第二行索引为 1 */
{8, 9, 10, 11}, /* 第三行索引为 2 */(以上代码中倒数第二行的 } 必须要有逗号,因为最后一行的 } 不能单独一行,)
}
向函数传递数组
10、指针
一个指针变量指向了一个值的内存地址。
指针变量:var var_name *var-type var-type 为指针类型,var_name 为指针变量名,* 号用于指定变量是作为一个指针,var ip *int /* 指向整型*/
空指针:当一个指针被定义后没有分配到任何变量时,它的值为 nil。nil 指针也称为空指针,nil在概念上和其它语言的null、None、nil、NULL一样,都指代零值或空值
判断指针是否为空指针:
if(ptr != nil) /* ptr 不是空指针 */
if(ptr == nil) /* ptr 是空指针 */
指针的指针
指针作为函数参数(如何返回数组或者指针类型的数组)