GO基础语法|青训营笔记
- 类型(与c类似)
- 变量初始化(可以用var, 也能直接 name := ...)
- if、if-else语句
- switch语句 (比c的switch功能强大)
- for循环语句
- 函数 (与c类似,不过最要紧的就是,name写前面,类型type写后面)
- 结构体 (与c也类似)
- 结构体函数
- 指针(与c类似)
- 切片(第一次学)
- map(map: 类似于java的哈希、字典)
- json处理(序列化/反序列化,在字典游戏中用到了,个人感觉需要点java基础)
- 时间处理 (在猜谜游戏中,随机数字用到时间处理)
- 数字解析(类型转换)
- 进程信息
接下来就是总结的一些代码:
import "fmt"
func f1(a, b int) int {
return a + b
}
func f2(a int, b int) int {
return a - b
}
func f3(n *int) {
*n += 2;
}
func f4(n int) {
n += 2;
}
type user struct {
name string
password string
}
// 结构体方法
func (u user) checkPassword (password string) bool {
return u.password == password
}
func (u *user) resetPassword (password string) {
u.password = password
}
func main() {
fmt.Println("Hello")
for i := 0; i < 5; i++ {
fmt.Println(1)
}
a:=1;
switch a {
case 1:
fmt.Println("swith")
}
// 切片, 可以看成任意长度的数组
s := make([]string, 3)
s[0] = "'x'"
s[1] = "'y'"
s[2] = "'j'"
fmt.Println("我的名字:" + s[0] + s[1] + s[2])
// append 追加元素
s = append(s, "哈哈哈")
fmt.Println(s)
// copy 复制
// map: 类似于java的哈希、字典
m := make(map[string]int) // 创建一个空map, 一个key类型,一个值类型
m["one"] = 1
m["two"] = 2
fmt.Println (m["one"])
fmt.Println (m["1111"])
fmt.Println (len(m))
fmt.Println("**********")
// range
n := make(map[string]string)
n["a"] = "A"
n["b"] = "B"
for k, v := range n{
fmt.Println(k, v)
}
for k := range n {
fmt.Println ("key", k)
}
fmt.Println ("**********")
// 函数
jia := f1(1, 2)
jian := f2(2, 1)
fmt.Println(jia)
fmt.Println(jian)
fmt.Println ("**********")
// 指针
zz := 5;
f4(zz) // 无效的加法函数
fmt.Println(zz) // 5
f3(&zz) // 有效的加法函数
fmt.Println (zz) // 7
fmt.Println("***********")
//结构体
jgt := user {name : "xyj", password : "030624"}
fmt.Println(jgt)
// 结构体方法, 比较特殊
fmt.Println( jgt.checkPassword("030624")) // true
jgt.resetPassword("0")
fmt.Println( jgt.checkPassword("030624")) // false
fmt.Println("*************")
// 错误处理 import "error"
// 字符串格式化 : fmt.printf 用法类似于c
// json 处理 序列化和反序列化 Marshal/ Unmarshal
// 时间处理 import "time"
// 数字解析 import "strconv" : 将字符串变为数字...
// 进程信息 : import "os" "os/exec"
}