要一直走下去

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

随笔分类 -  Go

摘要:结构体:就是根据基本类型造自己的类型,结构体占用一块连续的内存 定义结构体用大写还是小写?暂时用小写,如果用大写,别的包也能访问 自定义类型 type myInt int //自定义类型。type后面跟类型,用于给基本类型加方法var n myInt = 100fmt.Printf("%T", n) 阅读全文
posted @ 2020-07-02 03:07 要一直走下去 阅读(205) 评论(0) 推荐(0)

摘要:先看看panic是干什么的 执行到panic的地方,会出现异常。后面的代码不会执行,加了defer,panic之前会执行defer,加了recover会修复后继续执行 defer要在可能引发panic之前定义 recover()必须搭配defer使用 import ( "fmt" ) func f1 阅读全文
posted @ 2020-07-01 23:52 要一直走下去 阅读(1377) 评论(0) 推荐(0)

摘要:函数本身可作为参数和返回值(高阶函数) 函数也可以作为参数,传给别的函数,函数也可以作为返回值,那函数是什么类型呢? 确定函数类型的目的是写在参数和返回值里: func f1 ( f func() ) func() int{ ... } 无参数无返回值: func()无参数返回int: func() 阅读全文
posted @ 2020-07-01 23:37 要一直走下去 阅读(386) 评论(0) 推荐(0)

摘要:defer 用在函数中 把它后面的语句延迟到函数即将返回的时候执行如果有多个defer语句,函数结束时会先执行后面放进去的用于关闭文件操作,关闭数据库连接,断开socket等 defer执行时间的图 1.返回值赋值 2.真正的RET返回 如果有defer,会在第1、2步之间执行 无聊的笔试题 fun 阅读全文
posted @ 2020-07-01 23:24 要一直走下去 阅读(115) 评论(0) 推荐(0)

摘要:函数可以有多个参数,可以没有参数函数可以有多个返回值,可以没有返回值Go语言中参数没有默认值这个概念 常用写法: func sum(x int, y int)(int, int) { ...} 特殊写法: func f1(x, y, z int, m, n string) a int { ...} 阅读全文
posted @ 2020-07-01 23:21 要一直走下去 阅读(244) 评论(0) 推荐(0)

摘要:func countHans(s string) int { var count int = 0 for _, v := range s { isHans := unicode.Is( unicode.Han,v) if isHans { count ++ } } return count } 阅读全文
posted @ 2020-07-01 21:19 要一直走下去 阅读(185) 评论(0) 推荐(0)

摘要:map特点: map是无序的基于key-value的数据结构。map是引用类型,其内部使用散列表(hash)实现 必须初始化才能使用 map操作: var m1 map[string]int //声明:key为string类型,值为int类型 m1 = make(map[string]int, 10 阅读全文
posted @ 2020-07-01 18:44 要一直走下去 阅读(229) 评论(0) 推荐(0)

摘要://切片申请内存s1 := make([]int, 5, 10) //map申请内存m1 = make(map[string]int, 10)//指针申请内存var a = new(int) //a为0x342112910 makemake也是用于内存分配的,区别于new,它只用于slice、map 阅读全文
posted @ 2020-07-01 18:34 要一直走下去 阅读(629) 评论(0) 推荐(0)

摘要:指针Go语言中没有指针的运算,只需要记住两个符号:"*"和"&" var a *int //指针为nil*a = 100 //报错 var a = new(int) //通过new关键字申请一块内存,指针有值,指向的值为初始值*a = 100 //ok 阅读全文
posted @ 2020-07-01 18:30 要一直走下去 阅读(103) 评论(0) 推荐(0)

摘要:切片的本质: 切片是一个引用类型,是基于数组类型做的一层封装,内部结构包含头部指针、长度、容量。 形象把切片理解一个“框” ,框住数组或map的一部分,只能框连续的元素,底层数组改了,切片也改了,切片可以再切片 切片长度 len(slice) 是切片框住的元素个数;切片的容量 cap(slice) 阅读全文
posted @ 2020-07-01 18:29 要一直走下去 阅读(151) 评论(0) 推荐(0)

摘要:数组的初始化: var a1 [3]bool // {false, false, false} a1 = [3]bool{true, true, true} 或者 a1 := [3]bool{true, true, true} 或者 a1 := [...]int{1,3,45,6,34,1,5,7, 阅读全文
posted @ 2020-07-01 17:59 要一直走下去 阅读(114) 评论(0) 推荐(0)

摘要:方式一: package main import( "fmt" ) func swap(a *int, b *int) { tmp := *a *a = *b *b = tmp } func main() { a := 3 b := 4 fmt.Println(a, b) // 3, 4 swap( 阅读全文
posted @ 2020-06-30 18:04 要一直走下去 阅读(379) 评论(0) 推荐(0)

摘要:*和&的区别 : & 是取地址符号 , 即取得某个变量的地址 , 如 ; &a *是指针运算符 , 可以表示一个变量是指针类型 , 也可以表示一个指针变量所指向的存储单元 , 也就是这个地址所存储的值 . package main import( "fmt" ) func modify(a *int 阅读全文
posted @ 2020-06-30 17:36 要一直走下去 阅读(7084) 评论(0) 推荐(0)

摘要:值类型: 变量直接存储值,内存通常在栈中分配。例如int、float、bool、string、数组、struct是值类型 引用类型: 变量存储的是一个地址,这个地址存储最终的值。内存通常在堆上分配。通过GC回收。例如指针、slice、map、chan等是引用类型 堆和栈的区别(现在先记住这个)1.函 阅读全文
posted @ 2020-06-30 14:36 要一直走下去 阅读(322) 评论(0) 推荐(0)

摘要:1-5 目录结构 “包”在go文件第一行进行指定。 如果两个go文件都属于main包,可以直接调用。 例如,两个go文件都属于main包,test.go和main.go 要用 `go run test.go main.go`命令,因为main包默认不会加载其他文件 1-6:go的基本命令 `go r 阅读全文
posted @ 2020-06-24 02:04 要一直走下去 阅读(202) 评论(0) 推荐(0)

摘要:目标:1,问答系统项目 2,微服务化 3,日志收集系统 go知识图谱:https://www.processon.com/view/link/5a9ba4c8e4b0a9d22eb3bdf0#map 安装GO,官网:https://golang.org/dl/ 官方文档: https://go-zh 阅读全文
posted @ 2020-06-23 05:01 要一直走下去 阅读(148) 评论(0) 推荐(0)