Go 语言入门指南(二) | 青训营

110 阅读2分钟

接上一次的Go语言入门指南(一),这一部分比较简单跟Java比较类似,当然还是存在一些区别。

类型转换

bool类型不能转换成int

整型不能转换成bool

字符类型本质上就是整型

int(ch)

类型别名

type bigint int64//int64改名为bigint

运算符

算数运算符

+

-

*

/

%

++ 后自增,没有前自增

--

关系运算符

==

!=

<

<=

>=

逻辑运算符

&&

||

非0就是真,0就是假(但是go中bool和int不兼容)

位运算符

&按位与

|按位或

^异或

<<左移 左移n位就是乘以2的n次方,左边丢弃,右边补零 4<<2结果为16

>>右移 右移n位就是除以2的n次方,右边丢弃,左边补零 4>>2结果为1

赋值运算符

=

+=

-=

*=

/=

%=

<<=

>>=

&=

^=

|=

其他运算符

& 取地址运算符

*取值运算符

运算符优先级

从高到低

^ !

* / % << >> & &^

+ - | ^

== != < <= >= >

<-

&&

||

if

if 条件{

}

if 条件{

}else{

}

条件没有括号

左括号和if在同一行

//if支持1个初始化语句,初始化语句和判断条件以分号分隔

if a:=10; a==10{

}

多分支

if 条件 {

}else if 条件{

}else if 条件{

}else{

}

if 条件 {

}else if 条件{

}else if 条件{

}

循环

没有while do-while 只有for

for 初始条件;判断条件;条件变化{

}

迭代打印每个元素,默认返回两个值:一个是元素的位置,一个是元素本身

str:="abc"

for i,data:=range str {

fmt.Printf("str[%d]=%c\n",i,data)

}

for i:=ran ge str {//第二个返回值默认丢弃,返回元素的位置(下标)

fmt.Printf("str[%d]=%c\n",i,str[i])

}

switch

不需要break

switch 变量 {

case 1:

xxxxxx

case 2:

xxxxxxx

}

switch 变量 {

case 1:

xxxxxx

case 2:

xxxxxxx

default:

}

go语言保留了break关键字,跳出switch语句,不写默认就包含

fallthrough 不跳出switch语句,后面的无条件执行

支持一个初始化语句,初始化语句和变量本身,以分号分隔

switch 初始化语句;变量 {

case 1:

xxxxxx

case 2:

xxxxxxx

default:

}

可以 case 3,4,5:

score:=85

switch{//可以没有条件

case score>90://case后面可以放条件

fmt.Println("优秀")

case score>80://case后面可以放条件

fmt.Println("良好")

case score>70://case后面可以放条件

fmt.Println("一般")

default:

fmt.Println("其他")

}

break

for{//for后面不写任何东西,这个循环条件永远为真,死循环

}

break跳出循环,如果嵌套多个循环,跳出最近的那个内循环

continue跳过本次循环,下一次继续

break可用于for,switch,select而continue仅能用于for循环

goto

goto可以用在任何地方,但是不能跨函数使用

goto 标签

标签:

就先到这儿吧,也不知道Go语言入门要写几篇笔记才能写完。发现个奇怪的事情稀土掘金发笔记用markdown格式跟Typora显示的不太一样就+ *这些,Typora里后面不加空格直接换行不会变成点,但是在稀土掘金这边就会变成点。还有八分钟今天就又结束了,之后每一天都必须得发一篇笔记才行呢。