随笔分类 - GO
1
摘要:time标准库 时间类型 time.Time now := time.Now() fmt.Println(now) fmt.Println(now.Year()) fmt.Println(now.Month()) fmt.Println(now.Day()) fmt.Println(now.Date
阅读全文
摘要:接口 接口是一种类型,是一种特殊的类型,它规定了变量有哪些方法 接口的定义 type 接口名 interface { 方法名1(参数1,参数2),(返回值1,返回值2...) 方法名2(参数1,参数2),(返回值1,返回值2...) } 用来给变量、参数、返回值等设置类型 接口的实现 一个变量如果实
阅读全文
摘要:结构体定义 type 结构体名 struct{ 字段1 字段1的类型 字段2 字段2的类型 } 结构体初始化 先声明再赋值 var p person // 声明一个person类型的变量P p.name = "名字" p.age = 18 fmt.Println(p) 声明同时初始化 键值对初始化
阅读全文
摘要:数据的声明 // 数据是存放元素的容器 // 必须指定存放的元素的类型和容量(长度) // 数组的长度是数组类型的一部分 var a1 [3]bool // [false false false] var a2 [4]bool // [false false false false] fmt.Pri
阅读全文
摘要:0. 接口是什么? 这一段摘自 Go语言中文网 在面向对象的领域里,接口一般这样定义:接口定义一个对象的行为。接口只指定了对象应该做什么,至于如何实现这个行为(即实现细节),则由对象本身去确定。 在 Go 语言中,接口就是方法签名(Method Signature)的集合。当一个类型定义了接口中的所
阅读全文
摘要:1. 延迟调用 defer 的用法很简单,只要在后面跟一个函数的调用,就能实现将这个 xxx 函数的调用延迟到当前函数执行完后再执行。 defer xxx() 这是一个很简单的例子,可以很快帮助你理解 defer 的使用效果。 import "fmt" func myfunc() { fmt.Pri
阅读全文
摘要:0. 基本模型 goto 顾言思义,是跳转的意思。 goto 后接一个标签,这个标签的意义是告诉 Go程序下一步要执行哪里的代码。 所以这个标签如何放置,放置在哪里,是 goto 里最需要注意的。 goto 标签; ... ... 标签: 表达式; 1. 最简单的示例 goto 可以打破原有代码执行
阅读全文
摘要:0. 语句模型 这是 for 循环的基本模型。 for [condition | ( init; condition; increment ) | Range] { statement(s); } 可以看到 for 后面,可以接三种类型的表达式。 接一个条件表达式 接三个表达式 接一个 range
阅读全文
摘要:0. 语句模型 Go 里的选择语句模型是这样的 switch 表达式 { case 表达式1: 代码块 case 表达式2: 代码块 case 表达式3: 代码块 case 表达式4: 代码块 case 表达式5: 代码块 default: 代码块 } 拿 switch 后的表达式分别和 case
阅读全文
摘要:1. 条件语句模型 Go里的流程控制方法还是挺丰富,整理了下有如下这么多种: if - else 条件语句 switch - case 选择语句 for - range 循环语句 goto 无条件跳转语句 defer 延迟执行 今天先来讲讲 if-else 条件语句 Go 里的条件语句模型是这样的
阅读全文
摘要:1. 关于函数 函数是基于功能或 逻辑进行封装的可复用的代码结构。将一段功能复杂、很长的一段代码封装成多个代码片段(即函数),有助于提高代码可读性和可维护性。 在 Go 语言中,函数可以分为两种: 带有名字的普通函数 没有名字的匿名函数 由于 Go语言是编译型语言,所以函数编写的顺序是无关紧要的,它
阅读全文
摘要:0. 什么是结构体? 在之前学过的数据类型中,数组与切片,只能存储同一类型的变量。若要存储多个类型的变量,就需要用到结构体,它是将多个容易类型的命令变量组合在一起的聚合数据类型。 每个变量都成为该结构体的成员变量。 可以理解为 Go语言 的结构体struct和其他语言的class有相等的地位,但是G
阅读全文
摘要:0. 什么是指针 当我们定义一个变量 name var name string = "Go" 此时,name 是变量名,它只是编程语言中方便程序员编写和理解代码的一个标签。 当我们访问这个标签时,机算机会返回给我们它指向的内存地址里存储的值:Go。 出于某些需要,我们会将这个内存地址赋值给另一个变量
阅读全文
摘要:1. 字典 字典(Map 类型),是由若干个 key:value 这样的键值对映射组合在一起的数据结构。 它是哈希表的一个实现,这就要求它的每个映射里的key,都是唯一的,可以使用 == 和 != 来进行判等操作,换句话说就是key必须是可哈希的。 什么叫可哈希的?简单来说,一个不可变对象,都可以用
阅读全文
摘要:1. 数组 数组是一个由固定长度的特定类型元素组成的序列,一个数组可以由零个或多个元素组成。因为数组的长度是固定的,所以在Go语言中很少直接使用数组。 声明数组,并给该数组里的每个元素赋值(索引值的最小有效值和其他大多数语言一样是 0,不是1) // [3] 里的3 表示该数组的元素个数 var a
阅读全文
摘要:01. 整形 Go 语言中,整数类型可以再细分成10个类型, int 和 uint 的区别就在于一个 u,有 u 说明是无符号,没有 u 代表有符号。 解释这个符号的区别 以 int8 和 uint8 举例,8 代表 8个bit,能表示的数值个数有 2^8 = 256。 uint8 是无符号,能表示
阅读全文
摘要:对于只有 Python 语言经验的朋友,也许会不太理解声明这个过程,在 Python 中直接拿来就用,也不用声明类型啥的。Go 语言是静态类型语言,由于编译时,编译器会检查变量的类型,所以要求所有的变量都要有明确的类型。 变量在使用前,需要先声明。声明了类型,就约定了你这个变量只能赋该类型的值。 声
阅读全文
摘要:package main import( "fmt" ) func list(n int) { for i := 0; i <= n; i++ { fmt.Printf("%d+%d=%d\n", i, n - i, n) } } func main() { list(10) } package m
阅读全文
摘要:文件名&关键字&标识符 1. 所有go源码以.go结尾 2. 标识符以字母或下划线开头,大小写敏感 3. _是特殊标识符,用来忽略结果 4. 保留关键字 go程序的基本结构 1. 任何一个代码文件隶属于一个包 2. import 关键字,引用其他包: import(“fmt”) import(“os
阅读全文
摘要:golang语言特性 1. 垃圾回收 a. 内存自动回收,再也不需要开发人员管理内存 b. 开发人员专注业务实现,降低了心智负担 c. 只需要new分配内存,不需要释放 2. 天然并发 a . 从语言层面支持并发,非常简单 b. goroute,轻量级线程,创建成千上万个goroute成为可能 c.
阅读全文
1

浙公网安备 33010602011771号