Golang--基础
Miss 古月先生
什么是php大牛,我的理解是把基础运用到炉火纯青的地步就是大牛,我正在向这个方向前进
展开
-
golang 字符串操作
Go 语言的字符串常见转义符包含回车、换行、单双引号、制表符等,如下表所示。原创 2022-08-06 11:45:46 · 202 阅读 · 0 评论 -
golang goroutine协程 和 channel管道
文章目录前言进程和线程基本介绍程序,进程和线程的关系图并发和并行Go协程和Go主线程goroutine 快速入门案例一MPG模式基本介绍设置Golang 运行的CPUchannel(管道) 快速入门案例一解决方法全局变量加锁同步channel基本介绍前言进程和线程基本介绍进程就是程序在操作系统中的一次执行过程,是系统进行资源分配和调度的基本单位线程是进程的一个执行实例,是程序执行的最小单位,它是比进程更小的能独立运行的基本单位一个进程可以创建和销毁多个线程,同一个进程中的多个线程可以并发执行一原创 2022-04-14 17:31:27 · 486 阅读 · 0 评论 -
golang 单元测试
文章目录普通测试方法golang中的testing 单元测试方式步骤一步骤二多个可执行文件时 如何执行指定文件测试单个方法单元测试总结序列化 和 反序列化测试测试一个函数 或 一个模块是否正确普通测试方法package mainimport( "fmt")//计算1-10的和func addUpper(n int) int { var num = 0 for i := 1; i <= n - 1; i++ { num += i } return num}//单元原创 2022-04-11 15:57:30 · 2120 阅读 · 0 评论 -
golang json 序列化 和 反序列化
文章目录结构体 map slice 数据序列化结构体 序列化map 序列化slice 序列化结构体 map slice 数据反序列化结构体 反序列化map 反序列化切片slice 反序列化结构体 map slice 数据序列化公用代码package mainimport( "fmt" "encoding/json")//转换序列号func testResult(data interface{}){ //返回 []byte 所以打印时需要string 转换 result , er原创 2022-04-09 10:43:22 · 756 阅读 · 0 评论 -
Go 语言俩种执行文件方式 和 获取命令行参数
文章目录语言俩种执行文件方式方式一方式二获取命令行参数方式一方式二语言俩种执行文件方式方式一package mainimport "fmt"func main() { // \n :换行 // \t :三个空格 // \\ :\ // \" :" // \r :回车 ("雪山风忽悠\r你好") 结果 ("你好风忽悠") 会替换前面对应的字数 fmt.Println("姓名\t年龄\t籍贯\t住址\njohn\t12\t河北\t北京") fmt.Pr原创 2022-03-31 11:27:20 · 834 阅读 · 0 评论 -
golang 文件操作
1.文件基础操作package mainimport( "fmt" "os")func main(){ //打开文件 file , err := os.Open("d:/test.txt") if err != nil { fmt.Println("file错误信息:",err) } else { //输入内容 返回的是一个指针 fmt.Printf("file = %v",&file) //结果:file = 0xc000006028 } //关原创 2022-03-22 16:18:33 · 1888 阅读 · 1 评论 -
golang 类型断言
案例:package mainimport( "fmt")//声明接口type Usb interface{ //声明需要实现的方法 //方法名(参数列表)返回值列表 start() stop()}//方法实现start 和 stop 方法type Phone struct{}func (phone Phone) start(){ fmt.Println("手机连接开始。。。")}func (phone Phone) stop(){ fmt原创 2022-03-17 15:34:19 · 824 阅读 · 0 评论 -
golang 接口(interface)
接口基础操作package mainimport( "fmt")//声明接口type Usb interface{ //声明需要实现的方法 //方法名(参数列表)返回值列表 start() stop()}//接口执行工作type Working struct{}func (Working Working) GetWorking(usb Usb){ usb.start() usb.stop()}//方法实现start 和 stop 方法ty原创 2022-03-11 16:06:42 · 214 阅读 · 0 评论 -
golang 工厂模式
golang的结构体没有 构造函数,通常可以使用工厂模式来解决这个问题使用场景,当使用结构体时,结构体名称首字母是小写时,外部就无法引用此时就可以用工厂模式来解决案例:在model包里定义一个结构体首字母大写package model//定义一个结构体type Student struct{ Name string Scoute float64}在main包里引用package mainimport( "fmt" "go_code/project01/o.原创 2022-03-09 11:23:11 · 1138 阅读 · 0 评论 -
golang 面向对象 (继承,封装,多态)结构体
结构体基础操作package mainimport( "fmt")type Cat struct{ Name string `json:"name"`//返回时 Name会变成name Age int}func main(){ //声明方式一 var cat1 Cat cat1.Name ="小白" cat1.Age = 21 fmt.Println(cat1) //声明方式二 p1 := Cat{"tom",1} fmt.Pr原创 2022-03-07 15:57:02 · 434 阅读 · 0 评论 -
golang map基础操作
map 基本语法package mainimport( "fmt")func main(){ //var map(变量名) make[keytype]valuetype //声明方式一 var map1 map[string]string //声明后需要添加空间否则不可以打印 map1 = make(map[string]string,10) //参数1 map类型 参数2 空间大小可以忽略 map1["n1"] = "刘一" map1["n2"] = "陈二" fmt.P.原创 2022-03-01 17:24:54 · 1327 阅读 · 0 评论 -
golang 二维数组
package mainimport( "fmt")func main(){ /* 0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 3 0 0 0 0 0 0 0 0 */ var arr [4][6]int arr[1][2] = 1 arr[2][1] = 2 arr[2][3] = 3 for i := 0; i < 4; i++{ for j := 0; j < 6; j++{ fmt.Print(ar.原创 2022-02-26 17:13:29 · 2691 阅读 · 0 评论 -
golang 冒泡排序和查找
内部排序和外部排序1.内部排序(数据量较少使用)指将需要处理的所有数据都加载到内部存储中进行排序。包括(交换式排序法,选择式排序法和插入式排序法)2.外部排序法(数据量较大使用)数据量过大,无法全部加载到内存中,需要借助外部存储进行排序,包括(合并排序法和直接合并排序法)交换式排序1.冒泡排序法(Bubble sort)2.快速排序法(Quick sort)冒泡排序package mainimport( "fmt")func sort(arr []in原创 2022-02-26 16:01:32 · 3155 阅读 · 0 评论 -
golang 切片基础操作
1.切片跟数组操作的一些方式比较类似,最基本的区分就是 数组是定长 而 切片可以不定长2.切片也是引用类型切片使用的三种方式方式一:package mainimport( "fmt")func main(){ intArr := [...]int{11,22,33,44,55} /* slice:切片名称 intArr[1:3] :表示 slice 引用到intArr这个数组 引用数组 1:起始下标 3:截止下标(但不包括3) */ slice.原创 2022-02-23 16:40:48 · 1295 阅读 · 0 评论 -
golang 数组基础操作
四种初始化数组的方式package mainimport( "fmt")func main(){ //声明数组 // var arr [5]float64 等同于下面 arr := [5]float64{} for i := 0; i < len(arr); i++{ fmt.Printf("请输入第%v个成绩:",i+1) fmt.Scanln(&arr[i]) } fmt.Println("arr=",arr) //四种初始原创 2022-02-22 17:55:59 · 1074 阅读 · 0 评论 -
golang 随机数
package mainimport ( "fmt" "math/rand" "time")func main() { /* rand.Seed: 还函数是用来创建随机数的种子,如果不执行该步骤创建的随机数是一样的,因为默认Go会使用一个固定常量值来作为随机种子。 time.Now().UnixNano(): 当前操作系统时间的毫秒值 */ rand.Seed(ti.原创 2022-02-22 14:36:29 · 544 阅读 · 0 评论 -
golang 错误处理机制
package mainimport( "fmt" "time")func test(){ //使用defer + recover 来捕获 和 处理异常 //捕获到异常后,代码不会停止 会 继续往下执行 defer func(){ err := recover() // recover()内置函数,可以捕获到异常 if err != nil{ //说明捕获到错误 fmt.Println("err = ",err) //这里就可以将错误信息发生给管理员。。。 fm.原创 2022-02-22 10:23:04 · 296 阅读 · 0 评论 -
golang 常用函数
1.字符串函数package mainimport( "fmt" "strings" "strconv")func main(){ //string 常用函数 //len 字符串长度 一个中文等于3个字节 所以是9 str1 := len("string北") fmt.Println("str1 = ",str1) //结果9 //如果不用[]rune转换的话,那么输出的就会是字节 str2 := "string北京" str22 := []rune(str2).原创 2022-02-19 17:25:37 · 607 阅读 · 0 评论 -
golang defer 延时机制
package mainimport( "fmt")/* 1.当执行到defer时,暂时不执行,会将defer后面的语句压入到独立的栈(defer栈) 2.当函数执行完毕后(如:return),在从defer栈,按照《先入后出》的方式出栈,执行 3.在defer将语句放入到栈时,也会将相关的值拷贝同时入栈,当值入栈后 下面的代码对当前的变量 进行了变得 而栈里面的不会变得还是初始值*/func test(n1 , n2 int) int { defer fmt.Println(".原创 2022-02-19 11:10:44 · 63 阅读 · 0 评论 -
golang 闭包
闭包就是一个函数 和 与其相关的引用环境组合的一个整体(实体)package mainimport( "fmt")//闭包/* 1.闭包内的值 每次调用不会初始化,而是会累计叠加 2. var n int = 10 return func (x int) int { n = n + x return n } 这块是闭包的整体 */func addUpper() func (int) int { var n int = 10 var str string原创 2022-02-19 10:14:21 · 238 阅读 · 0 评论 -
golang 匿名函数
匿名函数就是没有名字的函数使用方法一:在定义匿名函数时直接调用,这种方式匿名函数只能调用一次package mainimport( "fmt")func main(){ res1 := func (n1 , n2 int) int { return n1 + n2 }(10,20)//(10,20)调用并且传递参数 fmt.Println("res1 = ",res1)}使用方法二:将匿名函数赋值给一个变量(函数变量),在通过该变量来调用匿名函数pack原创 2022-02-17 17:18:00 · 443 阅读 · 0 评论 -
golang init函数
每个源文件都可以包含一个init函数,该函数会在main函数执行前,被go运行框架调用也就是说init会在main函数前被调用通常可以在init函数中完成初始化工作如果一个文件同时包含全局变量定义 init函数和main函数,则执行的流程是 全局变量定义-----》init函数------》main函数package mainimport( "fmt" "go_code/project01/func/utils")//全局变量var age...原创 2022-02-17 17:04:20 · 180 阅读 · 0 评论 -
golang 方法以形参的方法传递
package mainimport( "fmt")//定义数据类型 简易版type myfuncType func (int,int) int/* 等同func myadd(myFunc func (int,int) int,num1,num2 int ) int { return myFunc(num1,num2)}*/func myadd(myFunc myfuncType,num1,num2 int ) int { return myFunc(num1,num2)}.原创 2022-02-17 16:37:49 · 238 阅读 · 0 评论 -
golang 猴子吃桃子问题
有一堆桃子,猴子第一天吃了其中一半,并再多吃了一个!以后每天猴子都吃其中的一半,然后在多吃一个。当到第十天时,想再吃时(还没吃), 发现只有一个桃子了问题:最初共有多少个桃子package mainimport( "fmt")/* 分析思路: 1)第10天只有一个桃子 2)第9天有几个桃子 = (第10天桃子数量 + 1) * 2 3)规律:第n天的桃子数据 peach(n) = (peack(n + 1) + 1) * 2*/func peach(n int) in原创 2022-02-17 12:02:30 · 209 阅读 · 0 评论 -
golang 递归调用
方式1:func test(n1 int){ if(n1 > 2){ n1-- test(n1) } fmt.Println("n1 = ",n1)}func main(){ test(5)}结果: n1 = 2 n1 = 2 n1 = 3 n1 = 4运行原理:方式2://递归 方式2func test2(n1 int){ if(n1 > 2){ n1-- test2(n1) } else { fm原创 2022-02-16 15:30:19 · 192 阅读 · 0 评论 -
goalng 包的基础
包的原理包的本质实际上就是创建不同的文件夹,来存放程序文件!结构 (每个文件下面都有对应的包名.go)包的基本理念说明:go的每一个文件都是属于一个包的,也就是说go是以包的形式来管理文件和项目目录结构的包的三大作用1:区分相同名字的函数,变量等标识符2:当程序文件很多时,可以很好的管理项目3:空置函数,变量等访问范围,即作用域包的相关说明打包基本语法注释:函数首字母大写外部才可以调用 如别的语言得public 小写只能内部调用引入原创 2022-02-15 16:34:21 · 305 阅读 · 0 评论 -
golang 创建函数基础语法
为什么使用函数1:减少代码冗余2:提高代码维护程度基本语法func 函数名 (形参列表) (返回值列表) { 执行语句。。。。 return 返回值列表}package mainimport( "fmt")func cal(n1 float64,n2 float64,label byte) float64 { var res float64 switch label { case '+': res = n...原创 2022-02-12 17:24:13 · 366 阅读 · 0 评论 -
goalng 某人有100000元 每经过一次路口,需要交费,规则如下1.当现金>50000时,每次交%5 当现金<=50000时,2.每次交1000
var money float64 = 100000 var sum int for { if money < 1000{ break } if money > 50000 { money -= money * 0.05 }else{ money -= 1000 } sum++ } fmt.Printf("该人可以经过%d次路口,还剩%v元",sum,money)某人可以经过62次路口,还剩767.4979115529859元...原创 2022-02-10 14:24:40 · 2011 阅读 · 2 评论 -
golang break和continue基础使用
break 跳出循环案例:package mainimport( "fmt" "math/rand" "time")func main(){ var num int = 0 for { //时间戳 返回一个1970:01:01 0:0:0到至今的一个时间戳 rand.Seed(time.Now().UnixNano()) //随机数 n := rand.Intn(100) + 1 fmt.Println("n = ",n) num++ if(n ==原创 2022-02-08 11:22:41 · 350 阅读 · 0 评论 -
golang 打印金字塔和九九乘法表
目标 操作思路1.打印出*号2.*换行3.打印出目标图第一个效果4.打印出目标第二个效果5.打印出目标第三个效果到这里可以看到最后一行没有* 所以在加一个判断 当最后一行时 不需要加空格下面在把层数写活...原创 2022-02-07 11:23:32 · 314 阅读 · 0 评论 -
golang for基础使用
package mainimport( "fmt")func main(){ //for 循环 基础使用 //循环变量初始化 循环条件 循环变量迭代 for i := 1; i <= 10; i++{ fmt.Println("你好世界~!") } //[]rune 是切片 否则字符串中的汉字会报错 var str string = "hello,world北京" str2 := []rune(str) for i := 0; i < len(str2.原创 2022-01-29 16:14:43 · 400 阅读 · 0 评论 -
golang switch基础使用
package mainimport( "fmt")func main(){ var num int = 10 switch num{ case 10: fmt.Println("ok1") fallthrough //默认只能穿透一层 case 20: fmt.Println("ok2") default: fmt.Println("没有匹配。。。") } var ment int fmt.Println("请输入成绩") fmt.Sc.原创 2022-01-29 14:43:31 · 765 阅读 · 0 评论 -
golang 原码 反码 补码
1.二进制的最高位是符号位:0表示正数,1表示负数1===》(0000 0001) -1(1000 0001)2.正数的原码,反码,补码都一样3.负数的反码=它的原码符号位不变,其他位取反(0->1,1->0)1===》原码(0000 0001) 反码(0000 0001) 补码(0000 0001)-1===》原码(1000 0001)反码(1111 1110) 补码(1111 1111)4.负数的补码=它的反码+15.0的反码,补码都是06.在计算机运算的时候原创 2022-01-27 18:03:08 · 724 阅读 · 0 评论 -
二进制 八进制 十六进制基础讲解
二进制:10 等于 二进制1010 下面用图讲解10 9 8 7 6 5 4 3 2 1 1010 1001 1000 111 110 101 100 11 10 1 八进制:10 等于 八进制12 下面用图讲解10 9 8 7 6 5 4 3 2 1 12 11 10 7 6 5 4原创 2022-01-27 12:04:56 · 12476 阅读 · 0 评论 -
golang 获取用户终端输入的内容
方法1:package mainimport( "fmt")func main(){ var name string var age byte var sal float32 var isPass bool fmt.Println("请输入姓名:") fmt.Scanln(&name) fmt.Println("请输入年龄:") fmt.Scanln(&age) fmt.Println("请输入薪水:") fmt.Scanln(&sal)原创 2022-01-27 11:07:11 · 719 阅读 · 0 评论 -
golang 包引入基础操作
包1目录:代码package modelvar GoodsName string = "乔欣"包2目录:代码package mainimport( "fmt" "go_code/project01/dome2/model")func main(){ fmt.Println(model.GoodsName)}结果标识符(变量名)首字母大写 可以被外部调用 如果小写则不可以被外部调用当前包引入外包的标识符内容还有就是环境.原创 2022-01-19 18:12:09 · 282 阅读 · 0 评论 -
golang 指针基础
package mainimport( "fmt")func main(){ var num int = 1 //& 获取当前变量的存储地址 fmt.Printf("num的地址=%v\n",&num) //下面的 var ptr *int = &num //1. ptr 是一个指针变量 //2. ptr 的类型 *int //3. ptr 本身的值&num var ptr *int = &num fmt.Printf("ptr 的.原创 2022-01-19 15:58:07 · 148 阅读 · 0 评论 -
golang 类型转换
文档:Go语言标准库文档中文版 | Go语言中文网 | Golang中文社区 | Golang中国基本数据类型转换string类型int32 可以向下转 int8 也可向上转int64 注意的是 向下转时 大于字节数的会溢出所以要注意基本数据类型 转 string 类型fmt.Sprintf("%d",变量) 整数fmt.Sprintf("%f",变量) 浮点数fmt.Sprintf("%t",变量) bool值fmt.Sprintf("%c",变量) ‘h’ unicode值.原创 2022-01-19 11:32:05 · 947 阅读 · 0 评论 -
Go语言的SDK是什么
SDK就是软件开发工具包原创 2022-01-18 09:35:18 · 3551 阅读 · 0 评论