这是我参与「第五届青训营」伴学笔记创作活动的的第1天。
前言
本人go语言零基础,之前主写java,通过一天的学习,将go与java在语法上对比记忆,记录一下一些注意点。
直入语法
1、惯例HelloWord
package main
import (
"fmt"
)
func main() {
fmt.Println("hello world")
}
以上有几点信息可得,1、package main表示一个可独立执行的程序,每个 Go 应用程序都包含一个名为 main 的包。2、go的入口是一个main函数3、go使用fmt标准库做输入输出流。4、使用import 引入标准库。
这里注意函数后的大括号不能独占一行、其次每一句语句后不需要“ ; ” 结尾。
2、变量
Go的变量定义和js相似使用var定义,但变量类型写在变量名之后,如var a int。可以赋初始值 var a=1 ,然后可以不使用var使用:=直接为变量赋初始值如b:=0。
Go 使用const 定义常量
3、循环
Go只有一个循环for,用法和java一样但同时有while的功能,与java不同的是for后面的循环条件不加小括号
4、if
If和for一样判断条件不加小括号,其次else不能单独一行即要写作
If 条件{
} else {
}
5、swich
Go的swich最大的特点是每个case后不用加break,其次case后可以使用表达式等直接进行判断如 case len(a)<10:{},最后使用default做默认条件。
6、切片
Go里的切片相当重要。他是一个可变的数组,可以使用make定义,如s := make([]string, 3),也可以这样定义good := []string{"g", "o", "o", "d"},可见这和数组定义类似。切片可以使用[]且取原切片的部分如good[2:3]即取索引为2开始之后的3个元素。其他操作在教程中都已经很详细,不再赘述。
7、map
这里注意map的定义和使用即可,使用make(map[key-type]value-type)定义如:
m := make(map[string]int)
m["one"] = 1
r, ok := m["unknow"]
8、range
Range的用法和java的for each类似,用于循环遍历数组或map,需注意是给两个遍历赋值第一个变量数组赋索引,map赋key键,第二个变量才是值,如果不需要某个值则使用下划线代替即可。
最后
这就是go基础语法中需要注意的地方和java的不同点,其他语法如函数、指针等都是go特定的定义,在很多教程中都十分详尽,多用自然记住,不再赘述。