这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天 进行简单记录
Hello World
梦开始的地方 每一个语言都有一个“你好”
package main
import "fmt"
func main() {
fmt.Println("hello go")
}
第一天主要是学习了go的基础语法 然后讲了三篇案例小项目 我是java出身的 不过每个语言的基础语法 大差不差
变量与常量
go 中的变量
var i int
var name = "Bob" go中的数据类型是在值的后面 通过var 这种自动识别类型 要不就是:= 这种赋值的方法
f := 4
go的常量
这个简单就是const关键字就好了
-
显式类型定义:
const b string = "abc" -
隐式类型定义:
const b = "abc"
if-else与循环
go语言中if后面没有括号 而且后面必须加大括号 不过由于书写习惯 我大括号都会加 switch分支后面也没有括号 可以在case后面写条件分支 而且没有break语句
a := 2
switch a {
case 1:
fmt.Println("one")
case 2:
fmt.Println("two")
case 3:
fmt.Println("three")
case 4, 5:
fmt.Println("four or five")
default:
fmt.Println("other")
}
for也是没有()
go中没有while 循环主要是靠for的
for i:=0;i<6;i++{
}
for中map 这些东西是可以和range一起用的 也就是方便遍历了
for key, value := range oldMap {
newMap[key] = value
}
数组和切片
var a [5]int
a[4] = 100
fmt.Println("get:", a[2])
fmt.Println("len:", len(a))
b := [5]int{1, 2, 3, 4, 5}
fmt.Println(b)
数组的话没什么特别的 和别的语言都差不多 切片的话和python中的有些类似 但是又不完全一样 我们可以通过make去创造数组 然后通过append去追加元素
s :=[] int {1,2,3 }
直接初始化切片,[] 表示是切片类型, {1,2,3} 初始化值依次是 1,2,3,其 cap=len=3。
map
m := make(map[string]int)
m["one"] = 1
m["two"] = 2
fmt.Println(m) // map[one:1 two:2]
fmt.Println(len(m)) // 2
fmt.Println(m["one"]) // 1
fmt.Println(m["unknow"]) // 0
可以使用内建函数 make 也可以使用 map 关键字来定义 Map
指针
这里面的没有C++指针的那么多功能 仅仅用来赋值
结构体
类似于C++里面的结构体
error
u, err := findUser([]user{{"wang", "1024"}}, "wang")
if err != nil {
fmt.Println(err)
return
}
fmt.Println(u.name) // wang
nil就是null err也有的是panic进行打印输出的