这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天
Go语言快速上手 - 基础语言
一、入门
首先让我们从"Hello,World"开始,如下是Go语言版本
package main
import (
"fmt"
)
func main() {
fmt.Println("Hello,World")
}
假定该代码写在名为start.go的文件中,那么只需要键入go run helloworld.go便可以执行输出
Hello,World
在此说明,Go同C、C++一样都是编译型语言,"go run"这个命令是编译并运行,若单单是对代码进行编译可以运行"go build"。
从上至下,我们以此来分析Go语言的语法。
package main
package名为包,即Go语言的代码通过包来进行组织与管理,这同Java中第一行的package很相似,同时往下的import语句也与Java很相似(Java选手看着眼熟),这个import导入进来的包变相当于导入了API,不同的包有不同的API可以用。如下面的fmt.Println就是调用了其中的函数。
二、程序结构
命名
Go语言中的名字必须以一个字母或者下划线开头。
声明
让我们看看今天课上的代码
var a = "initial"
var b, c int = 1, 2
var d = true
var e float64
g := a + "foo"
const s string = "constant"
const h = 500000000
var a = "initial" -> var 表示变量,它会自动的判断数据类型。
var b, c int = 1, 2 -> 这里对var的类型进行了具体的指定即int,同时这里是多个变量进行赋值,或者这么说指定类型为int的b,c变量被分别赋值为了 1 和 2;Java选手看了很痛苦。
var d = true -> d 会字段判断为boolean类型。
var e float64 -> float64也是一种类型,不懂。
g := a + "foo" -> 这是一种将为特殊的赋值,可以分为两步先是var g String然后是g = a + "foo"。同Java一样Go也支持字符串拼串,由于a是var类型且赋值给了一个字符串所以在此处是可以进行这个赋值的。
const s string = "constant" -> 以const打头的都是常量,这里具体指定了类型也可不指定。
条件运算符
for
看看今天的代码
package main
import "fmt"
func main() {
i := 1
for {
fmt.Println("loop")
break
}
for j := 7; j < 9; j++ {
fmt.Println(j)
}
for n := 0; n < 5; n++ {
if n%2 == 0 {
continue
}
fmt.Println(n)
}
for i <= 3 {
fmt.Println(i)
i = i + 1
}
}
在Go中for之后并不需要写一个()来框住条件表达式,同时Go中唯一的循环就是for,没有while等。 可以看到Go中是有break和continue的,同时在Go中写完一条代码是不需要用分号结尾的。
switch 和 if
if num := 9; num < 0 {
fmt.Println(num, "is negative")
} else if num < 10 {
fmt.Println(num, "has 1 digit")
} else {
fmt.Println(num, "has multiple digits")
}
a := 2
switch a {
case 1:
fmt.Println("one")
case 2:
fmt.Println("two")
default:
fmt.Println("other")
}
if结构很简单,这里switch结构要注意一点,以往语言中若判定了一个case没有break是不会自行弹出switch的,但是在Go语言中它会自己弹出。
数据类型
array
var a [5]int
a[4] = 100
b := [5]int{1, 2, 3, 4, 5}
var twoD [2][3]int
以上是对于array类型即数组类型的赋值方式。
slice
s := make([]string, 3) //切片的初始化
s[0] = "a"
s[1] = "b"
s[2] = "c"
//切片赋值的第一种方式
s = append(s, "e", "f")
//往切片中添加元素,由于切片的长度是可以动态变化的,所以不会报错。
c := make([]string, len(s))
copy(c, s)
//切片的拷贝
good := []string{"g", "o", "o", "d"}
//切片的初始化
slice即切片,是Go语言中使用频率很高的一种数据类型,相较于array的特点就在于它的长度是可变的而非静态固定的。
map
m := make(map[string]int)//初始化
m["one"] = 1//赋值
m["two"] = 2
m2 := map[string]int{"one": 1, "two": 2}//初始化
大概就这些了,其他同c语言差不多。后续会补充!