go语言入门经典百度云(Go语言学习笔记-1)
Go语言上手(一)
这是我参与「第五届青训营 -后端场」笔记创作活动的的第一篇笔记 。
先上代码仓库:
WenTesla/GoLang-Study: 一个学习Go的仓库 (github.com)
这个仓库下放下我目前学习GO的所有笔记以及代码 ,还未整理 ,最后会将仓库进行整理 。
基础语法
一:类型
GO的语法类似C和Python,感觉就像缝合怪
定义变量若要声明变量 ,需要使用 var 关键字:
单一定义:
var firstName string前一个语句声明 string 类型中的一个名为firstName 的变量 。
这里总结一下
标识符 xxx 类型
多定义
var ( firstName, lastName string age int)加上括号()
像C语言的结构体一样定义 ,只不过顺序是反的
Go可以自动推断类型
如下所示
var ( firstName = "John" lastName = "Doe" age = 32)或者如下:
a:="111"b:=2c:=2.1这一点需要注意 ,GO语言的声明之后必须使用 ,不然会报错
这一个特性真的让我感到疑惑 。不知道为何这样使用
Go的基本类型如下
1 布尔型 布尔型的值只可以是常量 true 或者 false 。一个简单的例子:var b bool = true 。 2 数字类型 整型 int 和浮点型 float32 、float64 ,Go 语言支持整型和浮点型数字 ,并且支持复数 ,其中位的运算采用补码 。 3 字符串类型: 字符串就是一串固定长度的字符连接起来的字符序列 。Go 的字符串是由单个字节连接起来的 。Go 语言的字符串的字节使用 UTF-8 编码标识 Unicode 文本。 4 派生类型: 包括: (a) 指针类型(Pointer) (b) 数组类型 (c) 结构化类型(struct)(d) Channel 类型 (e) 函数类型 (f) 切片类型 (g) 接口类型(interface) (h) Map 类型这里的Go不像java一样一切皆对象 ,派生类型比较多
二:基本库
1.基本打印输出fmt函数 ,相当于java的System类.
输出又类似C语言
fmt.printf(xxx) 2.切片 s := make([]string, 3) s[0] = "a" s[1] = "b" s[2] = "c" fmt.Println("get:", s[2]) // c fmt.Println("len:", len(s)) // 3这里创建切片和使用切片,同时打印切片的长度
Go的切片非常灵活 ,类似Python的使用 ,使用append函数是将数值追加到切片最后,同时返回切片的 。使用copy函数可以创建切片的副本 ,同时不影响之前的切片 ,这里要注意,切片在函数的参数是作为指针传入 ,这一点与数组不同
3.jsonGo的json非常方便 ,这里不像json一样繁琐 ,直接创建结构体可以
type Student struct { Name string `json:"name"` Sid string `json:"sid"`}序列化使用Marshal函数
s := Student{Name: "jonh" ,Sid: "10323"} //序列化 p ,err := json.Marshal(s)反序列化使用Unmarshal函数
//反序列化err = json.Unmarshal(p,&s)创建结构体时候的``是序列化json的时候对应数值的键值
4.timeGO的时间使用非常简单
比java简单
time.Now()获取时间
now.xxx()获取年月日
now.unix()时间戳
时间的加减
Add(during)函数实现某个时间 + 时间间隔
Sub(Time)获取时间差值
Equal()比较两者时间的相等
Before和After顾名思义
5.int和string的相互转化类似java ,比C++强 ,C++好像没有对应的Api
strconv包
strconv.ParesXXX (y)这里XXX表示要转换的类型 ,
同时可以再传入参数 ,比如指定要转换的类型
6.定时器GO语言这一点有点意思 ,别的语言还没发现这种语法 ,特别是作为循环使用定时器,js的好像是setTimeOut ,这个api是延时器
ticker := time.Tick(time.Second) //创建1秒间隔的定时器 for i := range ticker {//每1秒都会执行 fmt.Println(i) }创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!