今天第一次接触了go语言,给我的感觉是既有c语言的影子,也有python的影子。接下来分享学习中遇到的疑问与自己对go的初步理解。
变量与常量
学习每个语言的开始都是从变量和常量开始的,但经过学习后,我发现go中的变量和其他语言的变量常量的定义还是有很多不同的
首先go中的变量使用var定义这和javascript有点相似接下来是实操与运行结果,同时变量可以使用(:=)来直接定义而不需要使用var
常量的话就是把var改为const,但go中的常量没有确定的类型,会根据上下文来确定其类型。
package main
import "fmt"
func main() {
var a = "chu"
fmt.Println(a)
var b, c = 1, 2
fmt.Println(b, c)
//可以前面不适用var而使用:=来定义变量
d := 6
fmt.Println(d)
const s = "abc"
fmt.Println(s)
}
if else语句
go里面的if else语句和c,c++中的if else语句类似不同点就是go中if后面的条件语句不使用(),另外一点就是if后面的语句必须使用{}括起来.
go中的循环
golang中的循环语句只有for循环,后面如果没有循环条件,就会是一个死循环,也可以向c/c++那样,这点理解直接略过。
switch语句
go中的switch语句后面同样直接跟变量,与其他语言不同的一点是,go中case语句后面不用加break语句,执行完对应case语句直接跳出,而其他语句中,如果没有break就会执行完下面的case语句。
数组
练习代码
package main
import "fmt"
func main() {
var a [5]int
a[4] = 100
fmt.Println(a, len(a))
b := [4]int{1, 2, 3, 4}
fmt.Println(b, len(b))
var c [2][3]int
for i := 0; i < 2; i++ {
for j := 0; j < 3; j++ {
c[i][j] = i + j
}
}
fmt.Println(c)
}
运行结果
切片
基本使用语法
package main
import "fmt"
func main() {
a := make([]int, 5)
a[4] = 1
fmt.Println(a)
//使用append追加
a = append(a, 1, 2)
fmt.Println(a)
b := make([]int, len(a))
copy(b, a)
fmt.Println("b: ", b)
//切片前闭后开
fmt.Println(b[1:2])
}
运行结果
map
在Go中可以使用make来创建一个map,GO中的map是完全无序的,遍历的时候完全无序。
也可以不使用make,而是通过map[string]int{"first": 1, "second": 2}直接给map赋值
基本使用语法
package main
import (
"fmt"
)
func main() {
m := make(map[string]int)
m["one"] = 1
m["two"] = 2
fmt.Println(m)
// 获取键值对
//v1 := m["apple"]
//v2, ok := m["pear"] // 如果键不存在,ok 的值为 false,v2 的值为该类型的零值
a, ok := m["u"]
fmt.Println(a, ok)
delete(m, "two")
fmt.Println(m)
n := map[string]int{"first": 1, "second": 2}
fmt.Println(n)
}
运行结果
函数
Go中的函数与其他语言最大的不同就是go中的方法后面需要指定返回值类型,并且go中的参数类型是后置的。 练习代码
package main
import "fmt"
func add(a int, b int) int {
return a + b
}
func exists(m map[string]string, k string) (v string, ok bool) {
//如果键值k有对应的value,那么v为对应的value,否则v=0,ok为false
v, ok = m[k]
return v, ok
}
func main() {
sum := add(1, 2)
fmt.Println(sum)
fmt.Println(exists(map[string]string{"pig": "Pig"}, "pig"))
}
运行结果
这就是go的部分基础语法学习,学习下来,go给我的感觉就是代码很轻盈,功能又很强大,激发了我想用它开始实践的想法。打卡第一天加油!!!