配置环境
GO 项目中,一般来说它的工作目录结构是这样的:
- bin目录:包含了可执行程序,注意是可执行的,不需要解释执行。
- pkg目录:包含了使用的包或者说库。
- src目录:里面包含了go的代码源文件,其中仍按包的不同进行组织。
hello world
package main //每一个 Go 程序必须由一个 package 声明,各种各样的包是Go 程序组织和复用代码的方式。
import "fmt" //import 关键字 能从其他的 packages 引入代码为我所用, fmt 包其实是英文 format 的缩写,顾名思义,这个包实现了输入和输出的格式化。
func main() { //func 定义了一个函数块,后面是函数名,所以这个函数叫 main 函数,()内可以包括零个或多个参数,括号后可以有返回类型。”{}“是个函数体。本例中的函数没有参数,也没有返回值,只有一个打印语句。
fmt.Println("hello world") //该声明由三个部分组成。 首先,我们访问 fmt 包中的另一个函数 Println(即 fmt.Println 部分,Println 表示打印行)。 然后我们创建一个包含 Hello World 的新字符串,并以该字符串作为第一个也是唯一的参数调用(也称为调用或执行)该函数。
}
申明
变量
var a =
f :=
常量
const =
if-else
if后面没有括号
循环
只有for
数组
var a [5]int
切片
s := make([]string, 3)
s = append(s,"d")//追加元素,()里的s是赋值回去
c := make([]string, len(s))
copy(c,s)
fmt.Println(s)//{a b c d e f}
fmt.Println(s[2:5])//{c d e}
fmt.Println(s[:5])//{a b c d e}
fmt.Println(s[2:])//{ c d e f}
map类似字典
m := make{map[string]int}//[]是key类型,后面是value类型
m["one"] = 1
fmt.Println{m["unknow"]//0
r,ok := m["unkonw"]
fmt.Println(r,ok)//0 false
delete(m,"one")
无序 随机输出
指针
fun add2ptr(n *int){
*n += 2
}//一定要用指针,否则+2无效
add2ptr(&n)
错误处理
返回值加error,用if判断error是否存在
字符串操作
Contains:判断一个字符串是否包含另一个字符串 Count:字符串计数 Index:查找某个字符串的位置 Join:连接多个字符串 Repeat:连接多个字符串
字符串格式化
Println:打印多个字符串并换行
Printf
%v打印值 %+v打印字段名字和值 %#v结构体构造的整个名称和字段名字和值
JSON处理
json.Marshal数列化 json.Unmarshal反数列化到空的变量
时间处理
now := time.Now()//现在的时间 time.Unix时间戳
字符串和数字之间的转换
"strconv"包
n,_ := strconv.ParseInt("111",10,64)//(字符串,10进制,精度64位的整数)
Atoi:快速转成十进制