随笔分类 - go
摘要:package main import "fmt" //理解闭包 1 func adder(x int) func(int) int { //定义1个函数,没有参数,返回值是一个函数 return func(y int) int { //返回1个函数,并且参数是y ,返回一个int x += y r
阅读全文
摘要:一. 作用域就是标识符,常量,变量在 for ,if, switch, 函数,中的可见范围 函数天然就是作用域 1.块作用域 if,for,switch语句中 :=定义的变量,都是只能在当前if for switch中使用,离开这个范围不可以使用,不可见 func main() { //## 1.语
阅读全文
摘要:形参是局部变量 形参的表示符,只能在此函数中使用, 形参定义了就得用,不用就被定义形参 package main import "fmt" func fn1(x int) { //函数形参标识符一般要写,要在函数中使用,如果不用,就不写和返回值不同,返回值 fmt.Println(x) } func
阅读全文
摘要:一个函数执行1次也要封装用函数 函数的分类 内建函数,如make、new、panic等 库函数,如math.Ceil()等 自定义函数,使用func关键字定义 一.函数定义 func 函数名 (参数列表) [返回值列表]{ 函数体 代码块 [return 返回值] } add就是函数名:本质上给程序
阅读全文
摘要:数组,切片,map ,遍历效率都不高,时间复杂度O(n)和n有关,规模越大越耗时间 线性表:使用index效率高, map使用key定位效率高 map的key是无序的,即使你看到了好像是有顺序,不要当真,key不排序,value也不排序 map开辟内存中.房间编号,和地址是连续的 # 一.map定义
阅读全文
摘要:一.字符串拼接 手里正好有字符串用 + Sprintf 手里有[]string切片用: string.Join 比如for循环频繁的多次拼接用:strings.builder 1.字符串拼接 + Sprintf import ( "fmt" fmt.Println(s3) s4 := fmt.Spr
阅读全文
摘要:一.十六进制,十进制,在ASCII中的表示对应关系 1. 0 | 十进制 | 十六进制 | 字符 | | | | | | 0 | 0 | NULL | 0x01 //数值表达方式 '\x00' //十六进制字符表达 "\x00" //十六进制字符串 2.tab * 字符表示 十六进制 '\x09'
阅读全文
摘要:package main import "fmt" func main() { s1 := [5]int{10, 30, 50, 70, 90} fmt.Printf("s1底层数组 数组的地址:%p |首元素的地址:%p len:%d, cap%d|, %v \n", &s1, &s1[0], l
阅读全文
摘要:一.截取子切片 切片可以通过指定索引区间获得1个子切片 切片规则: clice[start:end],规则是前包后不包 start不写为0 end默认为len(slice)长度,如果写可以不是长度值 start,end不能超过容量值 len截取段的元素个数,end-start cap从header中
阅读全文
摘要:一.切片的特性 可以切除来一个新的子片 长度可变,长度元素个数 容量可变,长度和容量可以不一样 底层用数组,(顺序表访问快) 推荐使用make定义,可以指定初始容量大小,减少频发扩容 切片复制的都是header,函数return的也是header, len控制各个共同使用底层数组的可见范围 cap没
阅读全文
摘要:数组 一.数组的特性 //数组是值类型: var a=[3]int{1,2,3},b = a,新开内存,造1个全新的副本,造1个全新的副本b // 长度不可变 // 内容可变 // 可索引 // 顺序表 //函数retune出去的数组,也会新开内存存储 数组必须在编译时就确定大小,之后不能改变大小
阅读全文
摘要:a.go package main //main包里有个main函数 import "fmt" func main() { //1.main是程序的入口,操作系统调用时候,必须知道从哪里开始,代码编译的时候,会找package main, //2.如果想编译成可执行文件,必须有main函数,从mai
阅读全文
摘要:1. 整除,计算结果截取整数部分 func main() { fmt.Println(1/2, 3/2, 5/2) //0 1 2 比如3/2=1.5,但是除完的结果是1.5,只要1把不要0.5 // 比如:2/3=0.6666667,只要0,不要0.6666667 fmt.Println(-1/2
阅读全文
摘要:package main //main包里有个main函数 import "fmt" // func main() { // //1.main是程序的入口,操作系统调用时候,必须知道从哪里开始,代码编译的时候,会找package main, // //2.如果想编译成可执行文件,必须有main函数,
阅读全文
摘要:按位与 //计算机在运算的时候,都是按照补码方式运算的,所以要得到2的补码; 一,先得到2的补码 //(1)先得到2的源码: 00000000 00000000 00000000 00000010 二,得到2的补码 //(2)因为2是正数,由于正数是三码合一,所以源码,和补码相同 //(3)所以2的
阅读全文
摘要://使用 for循环完成练习,可以接收1个整数,表示层数,打印金字塔 ////思路:1,打印一个举行 func main() { //i表示层数 for i := 1; i <= 3; i++ { //j表示每行打印多少 * for j := 1; j <= 3; j++ { fmt.Print("
阅读全文
摘要:func main() { var n1 int8 = 10 var n2 int16 = 18 v3 := n1 + int8(n2) fmt.Printf("v3的类型是%T,值是%d",v3,v3) }
阅读全文
摘要:go的整型2有类: 8,16,32,64的意思是用多少位表示整数,所以int8能表示的数范围最大是255 有符号整数(可以表示负值和正值) int8: -128 ~ 127 int16: -32768 ~ 32767 int32: -2147483648 ~ 2147483647 int64: -9
阅读全文
摘要:方法: fmt.Sprintf(%本身的数据类型,变量) Spirntf()会返转换后的字符串 package main import ( "fmt" "strconv" ) func main() { //Sprintf格式化字符串,把指定的数据类型转成我要的字符串 //Spirntf()会返转换
阅读全文

浙公网安备 33010602011771号