自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Go: 用go编写一个简易版计算器

用go语言实现一个简易版的计算器

2022-09-06 17:14:54 1128 1

原创 Go: 用go编写一个双向链表实现增删功能

区块链中的区块其实就是将结构体串联起来的,从形成了区块链。

2022-07-27 18:57:13 2251

原创 Go:用go语言解决Joseph问题

Go语言爱好者,分享开发心得。随缘随喜

2022-07-27 17:08:06 286

原创 Go:goroutine 与channel一起使用所遇到的数据同步问题

当开启协程之后,主线程任务已经完成,那么就会造成数据不同步,数据丢失的问题。然后,考虑在协程中加上互斥锁。好像可以解决一些,但是,不稳定。10次大概8、9中。直接上代码。案例:1、开一个协程writeDataToFile,随机生成30~1000个数据,存放到文件中2、当writeDataToFile完成写1000个数据到文件后,让sort协程从文件中读取1000个文件,并完成排序,重新写入到另外一个文件中package mainimport ( "encoding/json" "f

2022-02-26 14:30:49 426

原创 Go: channel 和 goroutine的综合使用如何避免资源冲突

如何解决主线程已经退出,而协程还没有退出。导致没有结果输出。当然,go中有很多机制可以来解决,比如互斥锁(Mutex)、读写锁以及sync包中的WaitGroup()的方法等等。当在进行Go的练习中,可以尝试使用channel➕ goroutine 的方式,来解决这种因为开启多个协程而导致的冲突。案例练习:1、启动一个协程,将1~200的数放入到一个channel中;2、启动8个协程,从channel取出(n),并一起计算1+....+n的值,并存放到channel中3、最后8个协程协同完成

2022-02-18 16:15:15 214

原创 Go: 对内容先序列化然后写入到文件然后读取文件内容到终端

综合练习,写一个Student结构体,并绑定两个带参数的方法Store()ReStore(),并利用到go语言中的,encoding/json, io包、bufio包以及os包。从而完成将结构体实例内容序列化,写入到文件中,然后再从文件中取出,并反序列化,还原成结构体的内容。model/student.gopackage modelimport ( "encoding/json" "fmt" "os" "bufio" "io/ioutil")//定义一个结构体type Stude

2022-02-13 14:11:32 709

原创 Go:文件操作(将一个文件写到另一个文件中)

这个操作将用到ioutil包中的ReadFlie()函数,就是指一次性读入文件,这个跟bufio包中的NewReader()函数读入文件的方式不同,这种方式为有缓冲的读入,即可以每行读入。package mainimport ( "fmt" "bufio" "os" "io/ioutil" "io")//将一个文件的内容,写入到另一个文件中func main() { file1Path := "d:/src/go_code/test_file/gotest1.txt" file

2022-02-07 18:25:19 695

原创 Go: 对文件的操作(关于os包的读、写函数)

在Go语言中的os.File中,封装了所有的对于文件的相关操作,File是个结构体。package mainimport ( "fmt" "bufio" "os" "io")func main() { //创建一个新文件 //1、打开文件 c:/src/go_code/test_project/gotest.txt filePath := "c:/src/go_code/test_project/gotest.txt" /* func OpenFile(.

2022-02-07 17:59:08 473

原创 Go:对于接口参数的判断

接口是go语言中最重要的一个部分,其实现了代码的高内聚及低耦合的特性,使得代码具有多态性。因此,对于接口类型的判断,就显得比较重要了。package mainimport ( "fmt")type Student struct { Name string}//arg参数为空接口数组func TypeJudge(arg... interface{}){ for i,x := range arg { switch x.(type) { //x.type是固定格式 case boo

2022-02-07 17:03:58 585

原创 Go: 关于结构体切片及其排序

对于结构体的切片排序,可以导入sort.Sort(data interface),由于data为interface接口类型,因此就必须实现interface接口中的所有方法。Interface 接口的三个方法。案例:实现一个学生的结构体的切片,并按成绩由高到低进行排序。package mainimport ( "fmt" "sort" "math/rand" "time")//声明一个学生的结构体type Student struct { Name string St

2022-01-25 22:03:50 1158

原创 Go: 结构体与方法

在go语言中,用结构体绑定一个方法,会让代码块更容易理解。举一个简单的例子。案例:编写一个程序,从终端输入年份,可以快速计算出今年是属于天干地支的哪一年。首先决定天干地支的算法为:公元年数先减3,除10余数是天干。基数改用12除,余数便是地支年。天干从1~10,分别为:甲 乙 丙 丁 戊 己 庚 辛 壬 癸;地支从1~12,分别为:子 丑 寅 卯 辰 巳 午 未 申 酉 戌 亥。package mainimport ( "fmt")//定义一个天干的结构体type TianGa

2022-01-25 17:19:23 257

原创 Go:关于封装的具体实现

go语言的封装,就是把抽象出的字段和对字段的操作封装在一起,数据被保护在内部,程序的其他包只有通过被授权的操作(方法),才能对字段进行操作。封装的好吃就是:1、可以隐藏实现的细节;2、可以对数据进行验证,保障安全合理。主要体现在对结构体中的属性进行封装,通过方法或包 ,实现封装。其实现的步骤大致如下:~ 将结构体、字段(属性)的首字母小写(意为不能导出,其他包也不能使用,类似private);~ 为结构体所做的包提供一个工厂模式的函数,首字母大写。类似一个构造函数;~ 提供一个首字母大写的.

2022-01-22 01:19:34 890

原创 Go: 模拟一张银行卡存、取、查的功能(综合练习)

用Go模拟了一张卡的存、取、查的简单功能。未加入卡的识别功能。package mainimport ( "fmt")//定义一个账户的结构体type Account struct { ActNo string Pwd string Balance float64}func (account *Account) Deposite(pwd string,money int) (isOk bool,bal float64) { isOk = false if pwd != (*a

2022-01-19 19:41:43 436

原创 Go:关于结构体与方法的一个经典的综合用法

综合练习:编写一个方法使得给定的一个二维数组(3 X 3) ,并赋值,再转置。即:1 2 3 1 4 74 5 6 ==> 2 5 87 8 9 3 6 9package mainimport ( "fmt")type block struct { rect [3][3]int}//与结构体绑定的转置方法func (rectangle *block) transpose() { for ...

2022-01-18 00:33:31 211

原创 Go: 求运动员的最后得分及最高分和最低分的评委(经典案例)

综合训练题:跳水比赛,8个评委打分,运动员的成绩是8个成绩去掉一个最高分,去掉一个最低分,剩下的6个分数的平均分就是最后的得分。(最高分不大于11)使用一维数组实现如下功能:1、请把打最高分的评委和最低分的评委找出来......

2022-01-12 21:47:00 675 3

原创 Go: 求数组中大于平均值和小于平均值的数的个数

综合训练题:定义一个数组,并给出17个整数,求该数组中大于平均值的数的个数,和小于平均值的数的个数。(平均值按保留2位输出)package mainimport ( "fmt" "time" "math/rand")func BigNum(arr []int) (avg float64,bigCount int) { bigCount = 0 sum := 0 for i := 0 ; i < len(arr); i ++ { sum += arr[i] }.

2022-01-12 16:31:40 1588

原创 Go: 求数组中最大值和最小值及各自所对应的下标位置

综合练习题:编写一个函数,随机接受一个数组,该数组有10个数,请找出最大的数和最小的数,以及所对应的数组下标是多少?package mainimport ( "fmt" "time" "math/rand")func MaxNum(arr []int) (max int, maxIndex int) { max = arr[0]//假设数组的第一位为最大值 //常规循环,找出最大值 for i := 0; i < len(arr); i ++ { if max.

2022-01-12 16:23:44 3659

原创 Go: 关于有序数组的二分查找

对于Golang中,如果采用二分查找,那么数组的int元素必须是有序的。练习题:随机生成10个整数(1-100之间),使用冒泡排序法进行排序,然后使用二分查找法,查找是否有87 这个数,并输出显示下标。如果没有则提示“找不到该数”package mainimport ( "fmt" "math/rand" "time")//只能是指针方法的传递func SortArr(numArr *[10]int) [10]int{ tmp := 0 //过桥变量 var arrInt .

2022-01-12 16:14:03 363

原创 Go: 快速从数组中查找字符串

日常练习Go语言的代码编写,采用闭包的方式,可以快速从数组中查找字符串。练习:试编写一段代码。比如已知数组arr[10]strin保存了10个元素,现在要查找“AA”在其中是否存在。打印提出,如果有多个“AA” ,也要找到对应的下标。并测试代码执行的时长。​package mainimport ( "fmt" "time")func SearchStr(str [10]string) func (string){ index := -1 return func(fin.

2022-01-11 16:57:01 2464

原创 Go: 二维数组的遍历

二维数组的遍历,也分为常规遍历,和for-range的遍历。效果一样。二维遍历的练习:定义一个3行4列的二维数组,逐个从键盘输入值,编写一个程序,将4周的数值都清零。package mainimport ( "fmt")func main() { var arr [3][4]int for i := 0; i < len(arr); i++ { for j := 0; j < len(arr[i]); j ++ { fmt.Printf("请输入第%d行,.

2022-01-08 14:10:58 752

原创 Go:关于切片(slice)及append的一些用法

切片和数组类似,数组是值类型。切片是数组的一个引用,因此切片是引用类型,在进行传递时,遵守引用传递的机制。切片的空间大小是动态变化的,数组则是固定了长度。例如 var arr [5]int => 定义了长度为5的数组var slice [ ]int =make ([ ]int, len, cap), cap(容量)>=len (长度)练习:随机生成一组数据,并排序好(升序)该数组,要求插入一个元素,最后打印该数组,顺序依然是升序。package maini...

2022-01-07 22:25:19 902

原创 Go: 关于数组及二分查找等综合练习

学习程序需要的是不断的练习。程序不难,主要还是逻辑思维,即你对项目的思路,然后是如何将你的思路转变为代码。练习:用Go语言,写一程序。随机生成10个整数(1~100的范围)保存到数组,并倒序打印以及求平均值、求最大值和最大值的下标、并查找里面是否有55package mainimport ( "fmt" "math/rand" "time")func main(){ var numArr [10]int for i := 0; i < 10; i ++ { //设置一

2022-01-07 18:23:53 119

原创 Go:关于遍历字符串中rune的一些用法

Go有两种字符类型:uint8类型和rune类型。uint8类型即[]byte型,代表的是ACSII码的一个字符;rune类型,则代表一个utf-8字符,当需要处理复合字符时,如中文时,就需要用到rune()类型,rune 类型等价于 int32 类型。r := string(rune('a')),一般以这种方法进行转义。案例:遍历a -> z并输出,以及输出A -> Z、Z -> A按不同方式遍历并输出(刚学的时候,这个部分很绕,需要不断的练习)package ma

2021-12-24 18:50:52 1315

原创 Go语言:time()函数的用法(案例三天打鱼二天晒网)

在Go语言中,time.Time 的类型中,集合许多非常有用的函数,如time.Date(),time.Since(),time.Sub()等。这都大大方便了对于时间的统计。案例:编写一个函数,判断输入的某一天是打鱼还是晒网.思路:1、利用time.Date等函数,计算输入的那一天到指定日期的天数 2、三天打鱼二天晒网,总计是五天,如果按第1、2、3天是打鱼的,那么第4、5天为晒package mainimport ( "fmt" "time"...

2021-12-22 15:44:37 852

原创 Go语言:用for多层嵌套编写一个1~100以内的素数的函数

多层嵌套在go 语言中,被经常使用。合理利用,可以提高效率,并简化过程。案例:编写一个1~100以内的素数函数,要求计算有多少个,并计算总和,且输出每行5个package mainimport ( "fmt")//练习:编写一个函数,输出100以内的所有素数。每行只显示5个,并求和,//判断:素数为大于1且只能被自己整除func main() { var count int var sum int var flag bool = false //初始值默认为素数 i

2021-12-20 20:20:53 545

原创 Go语言:多层for语句的使用

用for语句可以控制输出的数数。案例:打印出倒三角形,且三角形的中间为空的。package mainimport ( "fmt")// ***** 第一层 ,没有空格,k=i -1 ; "*" -> 2 * 总层数 -当前层数 // *** 第二层,空一个,k = i -1 ; “*” -> 2 * 总层数 -当前层数// * 第三层,空二格,k = i -2 ; “*” -> 2 * 总层数 -当前层数var level int =

2021-12-19 13:51:10 382

原创 Go语言:关于匿名函数的调用

匿名函数在Go语言中也是经常被使用的。一个合理正确的使用匿名函数,可以使得你的代码块结构简洁清晰。案例:随机猜数游戏。范围1 ~ 100整数。可以有10次机会。package mainimport ( "fmt" "time" "math/rand")func bingo() int { //设置时间种子 rand.Seed(time.Now().UnixNano()) n := rand.Intn(100) + 1 //[0,100) return n}

2021-12-18 21:45:59 2381

原创 Go语言:闭包的用法

go语言中的闭包就是指一个函数和其他相关的引用环境组合的一个整体(即实体),好比是一个类,其优点是:1、只需传递一个参数,即传入一次,就可以反复使用;2、闭包可以保留引用的值,而函数不能。案例:package mainimport ( "fmt" "time")func daysCount(month int) func(int) int { return func(year int) int { switch month { case 2: if yea.

2021-12-18 00:06:22 477

原创 关于Go语言的for-break和for-continue用法介绍

Golang 案例;初入Golang门槛者;for-break 和 for-continue的用法介绍

2021-11-23 23:41:48 980

空空如也

空空如也

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

TA关注的人

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