Golang
卩杉
勤学如早春之苗,不见其增,日有所长。辍学如磨刀之石,不见其减,日有所损。
展开
-
go get connectex: A connection attempt failed because the connected party did not properly respond
今天 go get 时出现了截图中的这个问题:go: finding module for package github.com/Sirupsen/logruscsphere-test/my-log imports github.com/Sirupsen/logrus: module github.com/Sirupsen/logrus: Get "https://proxy.golang.org/github.com/%21sirupsen/logrus/@v/list": dial原创 2021-04-18 11:35:08 · 93118 阅读 · 1 评论 -
golang martini 包的简单使用
新公司用的 go router 框架是 go-martini/martini,github 有 11.2k 的 start,是一个非常优秀的项目,但是个人觉得文档确实写的简单了点。文章目录中间件的使用非 Handlers 函数方式的中间件Handlers 方式的中间件`Next` 函数的使用Next 在非 `Handlers` 中间件中使用Next 在 `Handlers` 中间件中使用服务全局映射请求级别的映射映射值到接口中文文档地址以下就简单说下使用中的几个问题,也是我看公司项目的一些想法记录.原创 2021-04-16 14:53:09 · 1051 阅读 · 2 评论 -
golang 实现快速排序
package mainimport "fmt"func quickSort(arr []int) []int { length := len(arr) if length < 2 { return arr } mid := arr[0] var low, high = make([]int, 0), make([]int, 0) for i := 1; i < length; i++ { if arr[i] > mid { high = append(原创 2021-03-22 16:31:57 · 371 阅读 · 0 评论 -
golang 的非缓冲通道
golang 的非缓冲通道,顾名思义也就是缓冲区是 0。一个通道发送和接收数据,默认是阻塞的。当一个数据被发送到通道时,在发送语句中被阻塞,直到另一个 goroutine 从该通道读取数据。相对地,当从通道读取数据时,读取被阻塞,直到一个goroutine 将数据写入该通道。/** * @Author: v_bivwei * @Description: * @Date: 2020/12/30 21:36 */package mainimport ( "fmt" "time原创 2020-12-30 22:10:31 · 259 阅读 · 0 评论 -
golang 中的字符串拼接方式
目录+ 号拼接fmt.Sprintf()strings.Join()buffer.WriteStringstrings.Builder结论+ 号拼接对于 + 号拼接,跟 php 的 . 一样,不过由于 go 中的字符串是不可变的数据类型,因此用 + 连接会产生一个新的字符串对效率有影响,在有大量字符串操作时,不建议用这种方式,不过对于少量的字符串处理,任何一种方式的处理效率都差不多。fmt.Sprintf() str := fmt.Sprintf("我是%s", "吴彦祖") log.Fa原创 2020-12-12 14:09:05 · 664 阅读 · 0 评论 -
golang 实现二分查找
/** * @Author: binwei * @Description: * @Date: 2020/12/3 10:59 */package mainimport ( "fmt")func main() { arr := []int{0, 1, 2, 3, 4, 5, 10} fmt.Println(binarySearch(arr, 10)) fmt.Println(binarySearchV2([]int{0, 1, 2, 3, 4, 5, 10}原创 2020-12-03 11:28:50 · 211 阅读 · 0 评论 -
golang 中 init func 和 var 谁先执行问题
golang 中有的 init 函数会先 main 函数执行,var 会先 init 函数执行。/** * @Author: v_bivwei * @Description: * @Date: 2020/7/4 16:44 */package mainimport "fmt"func init() { fmt.Println("init func")}func main() { fmt.Println("main func")}/** * @Author: v_bi原创 2020-07-04 16:52:17 · 1539 阅读 · 0 评论 -
golang 不定参数与不定参数的传递
/** * @Author: v_bivwei * @Description: * @Date: 2020/5/9 10:41 */package mainimport "fmt"func main() { myfun(1, 2, 3)}func myfun(args ...int) { for _, value := range args { fmt.Println(" === 00 ", value) } myfun01(args[:1]...)}func myf原创 2020-05-09 10:47:25 · 1988 阅读 · 0 评论 -
golang 命令行参数
os.Args 是一个 string 切片,用来存储所有命令行参数。/** * @Author: v_bivwei * @Description: * @Date: 2020/1/19 11:20 */package mainimport ( "fmt" "os")func main() { fmt.Println("命令行参数有 ", len(os.Args), "个...原创 2020-01-22 21:58:23 · 1057 阅读 · 0 评论 -
golang 中的 channel 小解
channel 本身是一个数据结构队列数据是先进先出的channel 本身是线程安全的channel 是有类型的,一个 string 的 channel 只能存放 string 类型结构channel 是引用数据类型,需要 make 后才能使用给管道中写入数据事,不能超过其容量channel 关闭时,就不能再往里写数据了,读数据是没有问题的可以使用 for range 遍历管道,但...原创 2020-01-22 21:57:46 · 2184 阅读 · 0 评论 -
select 解决从管道中取数据阻塞问题
传统的方法在遍历管道时,如果不关闭会阻塞而导致 deadlock ,在实际开发中我们不好确定在什么时候关闭管道。可以使用 select 方式解决。/** * @Author: v_bivwei * @Description: * @Date: 2020/1/22 18:03 */package mainimport ( "fmt")func main() { var in...原创 2020-01-22 21:56:59 · 2974 阅读 · 0 评论 -
break 在 golang 和 PHP 中的区别
golang/** * @Author: v_bivwei * @Description: * @Date: 2019/11/26 16:22 */package mainimport "fmt"func main() {label2: for i := 0; i < 10; i++ { for j := 0; j < 10; j++ { if (...原创 2019-11-26 21:47:05 · 113 阅读 · 0 评论 -
golang 自定义函数数据类型的使用示例
golang 支持自定义数据类型,基本语法为:type 自定义数据类型名 数据类型比如 type testInt int 这时 testInt 就等价于 int 来使用.再比如复杂一点我们可以自定义一个函数数据类型,如下:package mainimport "fmt"type MyFunType = func(a, b int) intfunc myFun2(funVar M...原创 2019-07-07 23:19:03 · 1053 阅读 · 0 评论 -
Golang 闭包的简单使用
基本介绍闭包就是一个函数与其相关的引用环境组成的一个整体(所谓的引用环境其实可以理解成变量).示例代码package mainimport "fmt"func main() { f := add() fmt.Println(f(1)) fmt.Println(f(2))}func add() func(int) int { var n int = 10 re...原创 2019-07-08 23:02:32 · 187 阅读 · 0 评论 -
Golang 中 defer 简单使用
说明Go 语言中的 defer 跟 php 中的析构函数__destruct ( void ) : void很相似,为了在函数执行完毕后,及时的释放资源,如数据库连接,文件句柄等。示例:package mainimport "fmt"func main() { mainRes := MySum(10, 20); fmt.Println("004 =", mainRes)}...原创 2019-07-09 23:35:44 · 195 阅读 · 0 评论 -
Golang 中的递归调用
每一种编程语言都有递归调用,趁着自己学习 golang 的时候,复习一下递归的知识.以下是一个简单的递归调用:package mainimport "fmt"func test(n int8) { if n > 2 { n-- test(n) } fmt.Println("n = ", n)}func main() { test(4)}我们可以简单分...原创 2019-07-06 17:46:51 · 2331 阅读 · 0 评论 -
Golang 递归实现菲波那切数列
package mainimport "fmt"func main() { var s int64 = Fibonacci(7) fmt.Println(s)}func Fibonacci(num int64) (int64) { if num == 1 || num == 2 { return 1 } else { return Fibonacci(num-2) +...原创 2019-07-06 18:42:39 · 328 阅读 · 0 评论 -
golang 实现数组反转
要求: 随机生成数组内容,并将数组反转打印出来package mainimport ( "fmt" "math/rand" "time")func main() { //var arr = [...]int{1, 5, 78} var arr [8]int // 给数组随机赋值 _len := len(arr)...原创 2019-07-15 22:44:32 · 11671 阅读 · 0 评论 -
Golang 递归实现猴子吃桃问题
问题:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少个桃子?分析 :代码实现package mainimport "fmt"func main() { var s int64 = eatP...原创 2019-07-06 20:59:16 · 334 阅读 · 0 评论 -
golang 中数组的使用小解
初始化数组的方式package mainimport "fmt"func main() { var arr [3]int = [3]int{20, 22, 33} fmt.Println(arr)}package mainimport "fmt"func main() { var arr = [3]int{20, 22, 33} fmt.Println(...原创 2019-07-11 23:13:17 · 289 阅读 · 0 评论 -
golang 整型的类型
整数的各个类型类型有无符号占用存储空间表示数的范围备注int8有1 字节-128 ~ 127int16有2字节-215 ~ 215-1int32有4字节-231 ~ 231-1int64有8字节-263 ~ 263-1uint8无1 字节0 ~ 255uint16无2字节0 ~ 216-1...原创 2019-10-09 13:59:31 · 251 阅读 · 0 评论 -
golang 利用指针交换两个数的值
package mainimport "fmt"func main() { var a int = 10 var b int = 20 swap(&a, &b) fmt.Printf("a = %v,b = %v", a, b)}func swap(n1 *int, n2 *int) { // 指针类型 var t int t = *n1 *n1 = *...原创 2019-07-07 22:15:34 · 1482 阅读 · 0 评论