1 为什么学
工作需要,未来投资
2 golang的特点
设置为服务端语言,简洁,用来替换C语言。
3 有意思的特性
《1》 函数的可变参数
《2》变量函数首字母大写是公共的,小写是私有的 ;
《3》中文命名的变量和函数
《4》延迟执行,离开作用域后执行。关键字 defer(再也不担心忘记释放语句)(函数返回时,能再次修改返回值)
《5》函数的强制云括号格式化,必须在函数名那一句的右边。不这样还编译报错。
4 平凡语言特性
自动垃圾回收
更丰富的内置类型
函数多返回值
错误处理
匿名函数和闭包
类型和接口
并发编程
反射
语言交互性
5 和c的比较
(##总的说,比C语言省略了圆括号,分号; 类型名靠后;)
1 头文件引用 #include <***> vs import "fmt"
2 函数变量类型定义
int myType::funcName(int a, int b, string c)
{
函数体
return r //只能单个返回值
}
vs
func (p myType ) funcName ( a, b int , c string ) ( r , s int ) {
函数体
return 语句
}
func : 关键字
(p myType): 表明函数所属于的类型对象!,即为特定类型定义方法,可以省去不写,即为普通的函数 (这里我们主要讲解 普通的函数)
函数名:
参数: (可以不声明)
返回值: (可以不声明)
函数体:
3 变量赋值
int a = 3; vs var a int = 3 或者 a:= 3(仅在函数体内才能这么写,自动类型推导)
4 for的比较
int i;
for(i =0; i<10; i++)
{
}
vs
for i:=0; i<10; i++ {
}
【注 foreach】
var pow = []int{1, 2, 4, 8, 16, 32, 64, 128}
for i, v := range pow {
fmt.Printf("2**%d = %d\n", i, v)
}
//_作为哑元,占位用
for _, value := range pow {
fmt.Printf("%d\n", value)
}
5 while 的比较
while(i<10)
{
}
vs
for i<10 {
}
【注】 死循环为
for {
}
6 if比较
if( x > 0)
{
}
vs
if x>0{
}
【注】 if
语句可以在条件之前执行一个简单语句。if
v := math.Pow(x, n); v < lim {
7 if else比较
if(t.Hour()<12)
{
j = 2;
}
else if( t.Hour() < 17)
{
j = 3;
}
else
{
j=4
}
vs
switch {
case t.Hour() < 12:
j = 2
case t.Hour() < 17:
j = 3
default:
j = 4
}
8 switch比较
switch(x)
{
case 1:
case 2:
xxx;
i = 3
break;
case 3:
j = 3
break;
default:
break;
}
vs
switch x{
case 1:
fallthrough
case 2:
i = 3
case 3:
j = 3
default:
break;
}
9 动态数组 vector vs slice
10
有疑问加站长微信联系(非本文作者)