自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

原创 13.1.2 关于函数的说明

1、go文件运行时,代码会存放在内存的代码区。2、一个函数被调用时【原本是作为代码放在代码区】,编译器会向系统在内存给它申请一个专门的栈区,和其他的空间是区分开的。因此函数内申明的变量(当然包括形参和返回参数),其作用域只在函数内,不影响到函数外;但接收的参数是引用类型时,由于引用类型的特性,会影响到函数外的该指针指向的值;当函数内某一变量并非传参进来,也非函数内部自己申明的,而是函数外的变量(全局变量或该函数之前的代码里的变量),即出现了闭包情形时,则也会影响到函数外的该变量。3、一个函数被

2020-10-26 23:39:07 159

原创 13.1.1 函数类型

//---------------todo:结构体与函数本身作为参数---------------package mainimport "fmt"type T struct { A int B int}func(t *T) test(f func(int)int)int{ return f(t.A)}func MyF(a int)int{ return a*3}func main() { myT := T{5,6} i := myT.test(MyF)

2020-10-25 23:54:24 105

原创 13.1 函数

package mainimport "fmt"func test(a int) { //todo:这里把形参不命名成a,会更便于区分理解 a = a + 1 fmt.Println("test a=", a)}func sum(a int, b int) int { fmt.Println("我要求和啦") return a + b}func multiply(a, b int) int { //todo:可以(a,b int)这样些,表明a,b同为int类型

2020-10-25 23:51:34 136

原创 13函数

第九本【第六章】关于 包、路径、Gopath、src、go build产生的a文件、给包取别名 见第九本146~152页1、 一个文件夹下可以有多个go文件,这些go文件内第一行的关键词package后面只能写相同的内容作为包名,即这些go文件拥有共同的包名,同属一个包,同在一个文件夹下,一个文件夹下只能有一个共同的包名;为了方便,一般在起名时让包名与这些go文件所属的文件夹名称保持相同。该文件夹下的同属一个包的这些go文件,每个go文件里都可以有自己的main主函数【实际生产一般不这么做

2020-10-25 23:49:22 124

原创 12.3 slice.go

package mainimport "fmt"func main() { n := []int{1, 2, 3, 4, 2, 3, 4, 2, 8} fmt.Println(n) m := n for k, v := range m { if v == 2 { m = append(m[:k], m[k+1:]...) } fmt.Println(k, "========", v, "--", m) fmt.

2020-10-25 23:46:51 66

原创 12.2 string.go

package mainimport "fmt"func main() { //todo:因为string字符串在golang中本质是切片【且默认情况下底层是[]byte切片】,每一个字符(即数字)本质上又是由连续 //todo:的单个字节表示的,因此可以进行如下转换,但注意不能用 []int8 []int16,虽然单个 //todo:汉字字符可以用int16两个字节的空间来表示 如: sli := []int16{12,'我'}可以运行不报错 //todo:以上详细可见 0

2020-10-25 23:45:59 73

原创 12.1 slice0array.go

package mainimport "fmt"func main() { a := [6]int{1, 2, 3, 4, 5, 6} for i := 0; i < 6; i++ { fmt.Printf("a[i]的类型=%T\n", a[i]) //a[i]的类型=int if i == 0 { a[0], a[1] = 100, 200 fmt.Print("a=", a) //a=[100 200 3 4 5 6

2020-10-25 23:45:10 67

原创 12 range for

for range 循环 来遍历字符串 第七本【第五章】128~129页1、for range 的底层其实是for len(range后面的原始内容),也即for range 是一次性拿到range后面的全部内容和长度,然后再循环着慢慢享用;如果range后面是切片,由于切片实质上是指向底层一个数组的指针,因此range一次性拿到的是一个指针和指针指向的底层数组的长度,故如果指针指向的内容在遍历时发生了变化,那么虽然range的表面内容即那个指针还是地址没变,但实质上每轮循环拿到的元素会随着变化,

2020-10-25 23:43:52 103

原创 11.1 for.go

package mainimport "fmt"func main() { //方式一 for i := 0; i < 10; i++ { fmt.Print("循环次数", i) } //todo:方式一中的 i 作用域只在for循环里,故同在main函数里的方式二依然可以使用 i作为变量 //方式二 i := 0 for ; i < 10; i++ { //todo:第一个分号不能省略 fmt.Println("循环次

2020-10-25 23:42:50 74

原创 11 for循环

for循环 第七本【第五章】125页~第八本145页循环条件判断B 返回的都是一个bool值,只有当是循环条件判断B返回的是true时,才执行循环操作的语句块方式一:这种情况下循环变量作用域只在for循环里,for循环外不能被用到for A循环变量初始化; B循环条件判断; C循环变量++ {循环操作的语句块}方式二://这种情况循环变量作用域并不只在for内,for循环后的代码还可以用A循环变量初始化for ; B循环条件判断; C循环变量++ {循环操作的语句块}方式

2020-10-25 23:42:01 195

原创 10.1 switch.go

package mainimport "fmt"func sum() int { return 44}func test(x int) int { a := 5 b := 2 return a + b + x}func main() { //todo:示例一 switch后面有一个表达式,case后面有一到多个表达式,前面的case匹配 //到执行了,后面的case即使也匹配但不会执行;switch和case表达式最终的值的类型要一致 n := 44

2020-10-25 23:41:11 157

原创 10 switch

switch 流程控制 第七本【第五章】116~124页1、switch后面跟0或1个表达式(变量、常量、有返回值的函数,总之最终得是一个值);case后跟1或多个表达式(变量、常量、有返回值的函数,总之最终得是一个值),如果是多个表达式要用逗号隔开,如果是多个常量,则需是不重复的多个常量2、将switch后面的表达式的返回值、值的数据类型 按case的排列顺序逐一地和case后面表达式的返回值和值的数据类型进行比较,值和类型相等的就执行相应的case冒号后的内容【否则执行default冒号后

2020-10-24 23:52:56 101

原创 9.1 if分支main.go

package mainimport "fmt"func test1() bool { fmt.Println("test1...") return true}func main() { //todo:&&短路与 和 ||短路非 //只会打印"wowowo" if 10 < 9 && test1() { //判断到10<9是false后,由于是&&,就不会再判断test()了 fmt.Pr

2020-10-24 23:50:03 89

原创 9 if分支

if 程序流程控制 第六本【第五章】 101~115页//todo:if和大括号之间1、if 和 大括号之间的语句,必须是返回值为bool类型的,由比较运算符(> < >= <= != == )和逻辑运算符(&& || !) 至少之一组成的语句2、if 和 大括号之间不会有逗号,最多会有分号,因为golang允许在if和大括号之间赋值,赋值语句和返回bool值的语句之间用分号隔开,且该变量的作用域只在该if语块内3、if 和 &&短路与

2020-10-24 23:49:26 140

原创 8 进制和位运算

进制 和 位运算 详见第五本【第四章】89~100页

2020-10-24 23:46:47 346

原创 7.1 flag.go

package mainimport ( "flag" "fmt" "os")//todo:Ags的本质是[]string 其获得的第一个参数总是当前运行文件的所在路径及文件名func get() { fmt.Println("输入的命令行参数元素个数:", len(os.Args)) for k, v := range os.Args { fmt.Println(k, "---", v) }}//运行时候这样写 go run flag.

2020-10-24 23:45:25 149

原创 7 flag和Scanf和Printf

flag 解析命令行参数 第二十本【14章378页】1、所谓命令行参数,是指在go run main.go 或 go build main.exe 等之后、按回车键之前输入的其他内容。2、这部分内容无法通过scan来接收,当然,接收命令行参数的方式也不能用于接收scan能接收到的内容。3、接收命令行参数的方式有两种,os包下的os.Ags和flag包下的三种方式;一般用flag包下的方式更具通用性。fmt包下的fmt.Scanln()和fmt.Scanf()两个函数从cmd中获取用户输入的值

2020-10-24 23:44:09 162

原创 6.1 运算符

package mainimport "fmt"func main() { //todo:这第一个最容易忽视并犯错 a := 7 / 2 fmt.Printf("a的类型 %T,a=%v\n", a, a) //a的类型 int,a=3 b := 9.9 / 3 fmt.Printf("b的类型 %T,b=%v\n", b, b) //b的类型 float64,b=3.3 c := 8.8 / 2.2 fmt.Printf("c的类型 %T,c=%v\n

2020-10-24 23:35:49 98

原创 6 运算符和运算优先级

运算符 第五本【第四章】74~86页运算符包含 算术运算符、赋值运算符、逻辑运算符、比较运算符、位运算符需要注意的点://todo:算术运算符 第1条最易犯错1、 / 除法运算中,如果 被除数、除数 都是整数,则商是只保留小数点左边的部分当 被除数、除数中至少有一个是小数时,则商是保留小数的实际结果商的类型和除数、被除数一致,为他们的默认类型或申明类型【详见yun4suan4fu2.go】2、 % 取余【也叫模运算、取模】运算的本质为 a%b == a - a/b *

2020-10-24 23:33:42 243

原创 5.2 类型转换

package mainimport "fmt"func main() { //todo:/*------类型转换,注意二者之间是否有转的原始基础,否则会转成该类型的默认零值---------------*/ //todo:多字节空间数据类型和少字节空间数据类型可以互相转,但大空间转小空间可能导致溢出,表现为数值的变化 var a int64 = 230 p := int8(a) //会溢出 p=-26,p的类型为int8 n := float64(

2020-10-24 23:24:35 75

原创 5.1 类型匹配

package mainimport "fmt"func main() { var a int8 // c := a + 8889 //报错 因为8899默认强转为int8时会溢出 c := a + 126 //不报错 因为126<127 fmt.Println(c) var m int = 99 var n float64 = 99.9 //q := m + n //报错,类型不匹配 fmt.Println(float64(m) + n

2020-10-24 23:17:09 123

原创 5 类型转换和匹配

类型匹配和类型转换 第四本【第三章】60~69页---------------------------------类型转换-----------------------------int系列(含字符) float系列 bool型 string型 四种基础数据类型的转换【类型转换时,注意二者之间是否有转的原始基础,否则会转成该类型的默认零值】【多字节空间数据类型和少字节空间数据类型可以互相转,但大空间转小空间可能导致溢出,表现为数值的变化】1、直接类型强转即可可用于 int系列(含字符)

2020-10-23 22:46:10 234

原创 4.2 float

package mainimport "fmt"func main() { //todo:float32可能造成小数点右边的尾数丢失,造成精度损失,故推荐用float64 //todo:申明小数时如果不指明类型,会默认是float64 var n float32 = 12.0000008 var m float64 = 12.0000008 fmt.Println("n=", n, "m=", m) //n= 12.000001 m= 12.0000008 var

2020-10-23 22:44:11 164

原创 4.1

package mainimport "fmt"func main() { //todo:int系列与字符-------------------------- aa := '$' fmt.Println("aa=", aa) //aa= 36 b := '被' fmt.Println("b=", b) //b=34987 被字对应的Unicode十进制数值(码值)是34987 a := 10 + b fmt.Println() fmt.Printl

2020-10-23 22:43:24 166

原创 4 int float bool string UTF8 ASCII

第三本【第三章】50-60页 基本数据类型 整型、浮点型、布尔型、字符串型1、一个位(bit)是计算机最小的空间,存放0或1。常说的32位操作系统64位操作系统,其中的位就是这个位的意思。2、一个字节(byte) == 8个位(bit)组成,根据各个位存放0或1(二进制)的不同排列组合,一个字节最大可表示2的8次方等于256、也即0~256范围内的十进制数或对应的一个ASCII(扩展版)字符;如果用最左边位来表示正负号,则一个字节最大可以表示-128~+127【不是+128是因为0这个十进制数算在

2020-10-23 22:41:53 143

原创 3.2 作用域

package mainimport "fmt"var age int = 50 //todo:这个作用域是全局的var name string = "jack"func test() { age := 10 //todo:这个作用域仅在test函数内 name := "tom" fmt.Println("age=", age) fmt.Println("name=", name)}func main() { fmt.Println("age=", age)

2020-10-23 22:37:15 68

原创 3.1 变量

package mainimport "fmt"//todo: var几乎等同于 := 中的冒号//todo:符合变量申明或默认的数据类型的不同值,可以赋值给该变量(同时会覆盖该变量之前的值//todo:变量在同一作用域内不能重名func main() { //todo:变量使用方式一,只申明不赋值,为该数据类型的默认零值,再赋值会只要类型匹配,变量的值就会改变 var a int fmt.Println("a=", a) //a=0 a = 10 fmt.Pr

2020-10-23 22:35:49 121

原创 3 变量&常量&作用域

第三本【第三章】第45-页 变量第四本【第三章】69-73页 常量第十本【第六章】176~178页 变量作用域—————————————--------------变量---------------------—————————变量表示内存中的一个存储空间一个变量n包含了 :1、变量名(n) 2、存的数据类型(如int类型)3、存的值(如 34) 4、该空间的地址(独一无二)给一个变量赋值,就是且只是同时将 值和数据类型赋给它--------------------------常量-----

2020-10-23 22:32:07 78

原创 1 转义符&换行

第二本【第一章】第30页\n 换行符\r 一个回车(即光标回到当前行行首)\t 制表符,通常用于排版\ 一个" 一个"package mainimport "fmt"func main() { fmt.Println("我是换行符\n符号") //输出如下 /* 我是换行符 符号 */ fmt.Println("我是回车符\r符号") // 符号回车符 //todo:可见回车符\r是将其后的内容从当

2020-10-23 22:21:36 1396

原创 2 Windows下CMD常用指令

第二本【第一章】第38-41页 windows系统下CMD终端的常用指令——————————————————————dir 查看当前位置其下包含的目录情况cd 表示要到哪里去cd … 回到当前位置的上一级目录(到下一级目录需借助dir以知道cd 后面写啥)cd 目录/目录/目录 进入到路径指向的位置cd \ 切换到当前位置所在

2020-10-23 22:18:37 190 1

原创 GORM使用手册

//todo:以下说明官方文档的sql语句可以和gorm混用,用各自的跟数据库的连接就行。// 但能不混用最好不混用。package mainimport ( "database/sql" "fmt" "gorm.io/driver/mysql" "gorm.io/gorm")var db *gorm.DBvar err errorfunc get(){ dst := "root:413188ok@tcp(localhost:3306)/shi3yong4gorm

2020-10-23 09:41:33 467

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除