Go
文章平均质量分 58
Golang
baboon_chen
My piano is the keyboard
展开
-
go reflect
文章目录反射一、`relect.Type`1、什么是 `relect.Type`?2、怎样区分`reflect.Type` (类型)与 `reflect.Kind`(种类)?示例:区分`Type`与`Kind`3、指针反射4、结构体反射1)`StructField` (结构体字段)2)`StructTag` (结构体标签)二、`relect.Value`1、获取特定类型的值2、判断`Value`中的值是否有效:3、通过类型信息创建实例4、通过反射调用函数三、反射三定律1、反射可以将"接口类型变量"转换为原创 2021-04-05 11:59:57 · 509 阅读 · 0 评论 -
go defer
一、defer原理 二、示例 1、package mainimport ( "fmt")func funcA() int { x := 5 defer func() { x += 1 }() return x}func main() { fmt.Println(funcA())}/*输出:5原因:返回值在defer前已经确定了*/ 2、func funcB() (x int) { defer func() { x += 1 }()原创 2021-01-29 17:44:23 · 158 阅读 · 0 评论 -
go interface
一、接口的定义 接口是一个或者多个方法签名的集合,任何类型只要拥有与这对应的全部方法,就表示它实现了该接口。接⼝命名习惯以 er结尾,结构体。接⼝只有方法签名,没有实现。接⼝没有数据字段。可在接⼝中嵌⼊其他接类型可实现多个接⼝。 二、空接口 空接⼝ interface{}没有任何⽅法签名,也就意味着任何类型都实现了空接⼝。因此,空接口可以存放任何类型的数据。 三、接口的执行机制 接⼝对象由接⼝表 (interface table) 指针和数据指针组成。runtiem原创 2021-01-24 21:15:29 · 119 阅读 · 0 评论 -
go struct
一、go sturct类型1、值类型2、struct名字不能与包名相3、结构体指针与结构体变量都可以通过.访问成员,这是一种语法糖。4、struct初始化示例type Point struct { X int Y int}func test1() { // (1)先声明变量,再给成员赋值 var p1 Point p1.X = 10 p1.Y = 5 // (2)直接初始化 p2 := Point{ X: 10, //允许只初始化部分成员 } // (3)初始化原创 2021-01-18 21:21:43 · 214 阅读 · 0 评论 -
go map
go map 特性 1、map常规操作。 Map存储的是无序的键值对集合 ,引⽤类型,哈希表。键必须是⽀持相等运算符 (==、!=) 类型,⽐如 number、string、pointer、array、struct,以及对应的 interface。值可以是任意类型,没有限制。示例:unc test1() { // 1、初始化 m1 := make(map[int]string, 1000) // 1000表示map最多能存放的key_value的数量,超过后,需要重新分配内存 m2 :=原创 2021-01-09 17:12:33 · 118 阅读 · 0 评论 -
go slice
go slice 特性 1、slice 并不是数组或数组指针。它通过内部指针和相关属性引⽤数组⽚段,以实现变⻓⽅案。引⽤类型。但⾃⾝是结构体,值拷⻉传递。属性 len 表⽰可⽤元素数量,读写操作不能超过该限制。属性 cap 表⽰最⼤扩张容量,不能超出数组限制。如果 slice == nil,那么 len、cap 结果都等于 0。 runtime.hstruct Slice{ // must not move anything by原创 2021-01-07 16:49:51 · 141 阅读 · 0 评论 -
go array
go array 特性 1、数组是值类型,赋值和传参会复制整个数组,⽽不是指针。func printArray(x [2]int) { fmt.Printf("the array x address is:%p\n", &x) x[1] = 1000}func test1() { var a [2]int = [2]int {1} fmt.Printf("the array a address is:%p\n", &a) fmt.Printf("the value o原创 2021-01-05 16:35:25 · 148 阅读 · 0 评论 -
go实现linux下的tree命令
go实现linux下的tree命令 代码package mainimport ( "flag" "fmt" "io/ioutil" "os" "path/filepath")func main() { var dir string = "." if flag.NArg() > 0 { dir = flag.Arg(0) } tree(dir, 1)}...原创 2019-12-25 16:25:34 · 491 阅读 · 0 评论 -
go语言实现四则运算
go语言实现四则运算文章目录go语言实现四则运算一 将四则运算用中缀表达式表示二 前缀、后缀表达式求值1 前缀表达式求值2 后缀表达式求值三 中缀表达式转前、后缀表达式1 中缀表达式转前缀表达式2 后缀表达式转前缀表达式四 GO代码main.gostack.go 一 将四则运算用中缀表达式表示前缀表达式、中缀表达式、后缀表达式都是四则运算的表示方式。为了按照四则运算的运算顺序求值(比如乘...原创 2019-12-20 17:20:11 · 3125 阅读 · 4 评论