首页IT科技go语言入门经典百度云(Go语言学习笔记-1)

go语言入门经典百度云(Go语言学习笔记-1)

时间2025-05-05 15:00:41分类IT科技浏览3007
导读:Go语言上手(一)...

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.json

Go的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.time

GO的时间使用非常简单

比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版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
农业病虫害书籍(农业病虫害数据集与算法——调研整理)