这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天
##础语法 Hello World##
package main //入口文件
import{"fmt“} //fmt包,用来输入输出字符串,格式化字符串
func main() { fmt.Println("Hello World") }
Go的变量类型
#字符串是内置类型,可以直接通过加号拼接
g := a + "foo"
变量声明方式:
1: var a = "initial"
2: f := float32(e)
常量声明方式:
const s string = "constant"
const h = 2000
基础语法 if-else:
if 后面不要括号
if 7%2==0{
fmt.println("7 is even")}
但是写了也没事,编译器会自动去掉
循环:
只有for循环
for{ fmt.Println("loop") break } //死循环
for j :=7; j<9; j++{ fmt.Println(j) } //和C语言一样
continue--继续循环
break-----跳出循环
switch选择语句:
和C++类似,但是不需要加break语句,可以使用任意的变量类型
数组:
声明方式:
var a[5]int
切片:
可变长度数组,使用make创建切片
s := make([]string,3)
s[0]="a"
可以使用append来堆栈,使用append必须要赋值回去
s=append(s,"d")
s=append(s,"e","f")
有着与python一样的切片操作,
fmt.Println(s[2:5])
fmt.Printtln(s[:5])
fmt.Println(s[2:])
基础语法:map:
实质-哈希
使用make创建map:
m := make(map[string]int)
key的类型:string
value的类型: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.Printlln(m["unknown"]) //0
删除:
delete(m,"one")
基础语法:range:
range遍历,对于数组会返回两个值(索引,对应位置的值)
遍历map的话第一个值是key,第二个值是value
函数:
变量类型后置
指针: 操作有限,对传入的值进行修改
结构体:
初始化时要传入初始化的每个值
没有指定初始化的值会被初始化成空值
读取或写入使用”.“,参考代码16,17行
结构体方法:
错误处理:
使用一个单独的返回值来返回错误的信息,在函数的返回值里添加一个error,当return时,return两个值
字符串格式化:
Json处理:
变量第一个字母为大写
使用json.Marsha进行数列化,数列化后直接输出数列化后的数组为16进制数字,使用string强制约转换后输出字符串,参照代码20,21行
时间处理:
需要引用"time"
最常使用:time.Now
数字解析:
进程信息: