基础语法开始:
main方法
main方法只能有一个
注意:go的语法有点像规约大于配置
import导入的包必须使用,不然报错
声明的变量,必须使用,不然也报错
package main
//import xxx
func main(){
}
常量与变量
自动声明变量类型,自动推导类型,根据你的值来
a := 10
声明指定类型变量,常量在前,类型在后
var a int
赋值变量
a=10
输出变量方式
fmt是一个出常用的包,一些基本的输出都在里面
import "fmt"
fmt.Printf("a=%d,b=%d", a,b)
交换两个变量的位置,比java,python都简便
记得算法的经典简单题吗:
逆转一个链表
用go只需要一行搞定
i:=10
j:=20
i,j=j,i
匿名变量
匿名变量,一般结合函数的返回值来使用,由于go语言的函数支持多个返回值,所以需要_来摒弃不需要的返回值。
如下:第一和第三个返回值都没有获取。
func main() {
_,k,_:=test()
println(k)
}
func test()(a,b,c int){
return 1,2,3
}
声明常量,常量不允许赋值,从英语单词constant由来
常量无法使用 := 的语法,可以直接自动推导类型
const a int =10
const b=10
代码块实现多定义
var{
a int
b float64
}
const{
a int =10
}
枚举
1.iota是常量自动生成器,每隔一行,+1
2.lota只能给常量赋值
const{
//0
a=iota
//1
b=iota
//2
c=iota
}
//也可以只写一个iota
const{
//0
a=iota
//1
b
//2
c
}
//如果是同一行,那么值都一样
const{
//0
j=iota
//1,1,1
a,b,c=iota,iota,iota
}
逻辑运算
if语句
if语句支持在语句内进行初始化
if(a := 10, a==10){
println("success")
}else{
println("failed")
}
switch语句就比较普通
go语言的switch默认就带break
func main() {
num:=10
//switch后面写的是变量本身
switch num {
case 1:println("1")
//break
case 2:println("2")
//break
default:
println("default")
//break
}
}
break代表跳出循环
而fallthrough代不跳出循环,后面的语句无条件执行
因为默认是break,如果需要不跳出记得要加fallthrough
func main() {
num:=10
//switch后面写的是变量本身
switch num {
case 1:
println("1")
fallthrough
case 2:
println("2")
fallthrough
default:
println("default")
fallthrough
}
}
swtich也是支持一个初始化语句,跟变量用;分割,case语句也能放条件
func main() {
//switch后面写的是变量本身
switch num:=10;num {
case num >10:
println("1")
fallthrough
case num == 10:
println("2")
fallthrough
default:
println("default")
fallthrough
}
}
循环语句
go语言中没有while,dowhile语句
for 初始化条件;判断条件;条件变化
sum := 0
for i:=1;i<10;i++{
sum+=i
}
go里面有range字符,会有两个返回值
第一个返回元素的位置,第二个返回元素本身
这个很常用后面结合channel都有使用
str := "hello"
for i,data := range str{
printf("位置为",i,"数值为",data)
}
str := "hello"
for i := range str{
printf("位置为",i)
}
//跟下面是相同的
str := "hello"
for i,_ := range str{
printf("位置为",i)
}
goto关键字(用处不多,代码会很乱)
goto关键字可以在代码之间跳转
goto 【标签名】
【标签名】: 【跳转的内容】
func main(){
printf("123")
goto END
printf("111")
END:
printf("321")
}
//最终会输出123321