go语言开发交流qq群 857263711 保持进步 希望每个人都能找到自己喜欢的方式生活、工作。

随笔分类 -  go语言

1 2 下一页

linux安装go开发环境
摘要:1下载go wget https://studygolang.com/dl/golang/go1.12.7.linux-amd64.tar.gz执行此命令会将go1.12.7.linux-amd64.tar.gz下载到当前运行wget 的目录下2解压 不同系统下载的路径不同 ubuntu下载到当前目 阅读全文

posted @ 2019-08-02 19:44 送欢 阅读(200) 评论(0) 推荐(0)

go guid 和uuid生成
摘要:1 安装 开始-运行 输入 cmd 回车 输入 go get -u github.com/typa01/go-utils 安装完毕后 2 使用 a 首先引入包 import ( goutils "github.com/typa01/go-utils" ) b 调用相应的guid uuid方法 gui 阅读全文

posted @ 2019-07-18 17:23 送欢 阅读(558) 评论(0) 推荐(0)

go select 的default
摘要:当 select 中的其他条件分支都没有准备好的时候,`default` 分支会被执行。 为了非阻塞的发送或者接收,可使用 default 分支: package main import ( "fmt" "time") func main() { tick := time.Tick(100 * ti 阅读全文

posted @ 2019-07-16 21:42 送欢 阅读(4301) 评论(0) 推荐(0)

go select 使得一个 goroutine 在多个通讯操作上等待。
摘要:select 语句使得一个 goroutine 在多个通讯操作上等待。 select 会阻塞,直到条件分支中的某个可以继续执行,这时就会执行那个条件分支。当多个都准备好的时候,会随机选择一个。 package main import "fmt" func fibonacci(c, quit chan 阅读全文

posted @ 2019-07-16 21:12 送欢 阅读(368) 评论(0) 推荐(0)

go channel
摘要:channel 是有类型的管道,可以用 channel 操作符 <- 对其发送或者接收值。 默认情况下,在另一端准备好之前,发送和接收都会阻塞。这使得 goroutine 可以在没有明确的锁或竞态变量的情况下进行同步。 channel 定义 c := make(chan int) package m 阅读全文

posted @ 2019-07-16 20:40 送欢 阅读(259) 评论(0) 推荐(0)

go goroutine
摘要:goroutinegoroutine 是由 Go 运行时环境管理的轻量级线程。 go f(x, y, z)开启一个新的 goroutine 执行 f(x, y, z)f , x , y 和 z 是当前 goroutine 中定义的,但是在新的 goroutine 中运行 `f`。 goroutine 阅读全文

posted @ 2019-07-16 15:55 送欢 阅读(175) 评论(0) 推荐(0)

go io.Reader 接口
摘要:io 包指定了 io.Reader 接口, 它表示从数据流结尾读取。 Go 标准库包含了这个接口的许多实现, 包括文件、网络连接、压缩、加密等等。 io.Reader 接口有一个 Read 方法: Read 用数据填充指定的字节 slice,并且返回填充的字节数和错误信息。 在遇到数据流结尾时,返回 阅读全文

posted @ 2019-07-16 14:54 送欢 阅读(2876) 评论(0) 推荐(0)

go 错误
摘要:错误 Go 程序使用 error 值来表示错误状态。 与 fmt.Stringer 类似,`error` 类型是一个内建接口: (与 fmt.Stringer 类似,`fmt` 包在输出时也会试图匹配 `error`。) 通常函数会返回一个 error 值,调用的它的代码应当判断这个错误是否等于 ` 阅读全文

posted @ 2019-07-16 14:26 送欢 阅读(204) 评论(0) 推荐(0)

go String方法的实际应用
摘要:让 IPAddr 类型实现 fmt.Stringer 以便用点分格式输出地址。 例如,`IPAddr{1,`2,`3,`4}` 应当输出 `"1.2.3.4"`。 String()string 方法的实现 func (ip IPAddr) String() string { return fmt.S 阅读全文

posted @ 2019-07-16 13:43 送欢 阅读(296) 评论(0) 推荐(0)

go String接口方法
摘要:该接口经常用于输出 struct 的值 或者记录struct数据日志 一个普遍存在的接口是 fmt 包中定义的 Stringer接口 发现 http://tour.studygolang.com/methods/6 中的说法有错误.经过查找go 源码Stringer的定义存放在下面的目录中 定义为 阅读全文

posted @ 2019-07-16 13:24 送欢 阅读(2608) 评论(0) 推荐(0)

go 接口
摘要:隐式 接口 接口类型是由一组方法定义的集合。 接口类型的值可以存放实现这些方法的任何值。 类型通过实现那些方法来实现接口。 没有显式声明的必要;所以也就没有关键字“implements“。 隐式接口解藕了实现接口的包和定义接口的包:互不依赖。 package main import ( "fmt" 阅读全文

posted @ 2019-07-16 11:34 送欢 阅读(251) 评论(0) 推荐(0)

go 结构的方法总结
摘要:方法可以与命名类型或命名类型的指针关联。 刚刚看到的两个 Abs 方法。一个是在 *Vertex 指针类型上,而另一个在 MyFloat 值类型上。 有两个原因需要使用指针接收者。首先避免在每个方法调用中拷贝值(如果值类型是大的结构体的话会更有效率)。其次,方法可以修改接收者指向的值。 尝试修改 A 阅读全文

posted @ 2019-07-15 23:01 送欢 阅读(158) 评论(0) 推荐(0)

go 结构的方法2
摘要:你可以对包中的 任意 类型定义任意方法,而不仅仅是针对结构体。 但是,不能对来自其他包的类型或基础类型定义方法。 package main import ( "fmt" "math" ) type MyFloat float64 //定义在了结构体上 func (f MyFloat) Abs() f 阅读全文

posted @ 2019-07-15 23:00 送欢 阅读(93) 评论(0) 推荐(0)

go struct 的方法1
摘要:方法 Go 没有类。然而,仍然可以在结构体类型上定义方法。 方法接收者 出现在 func 关键字和方法名之间的参数中。 package main import ( "fmt" "math" ) //定义结构体 type Vertex struct { X, Y float64 } //定义结构的方法 阅读全文

posted @ 2019-07-15 22:57 送欢 阅读(205) 评论(0) 推荐(0)

go 函数闭包
摘要:Go 函数可以是闭包的。闭包是一个函数值,它来自函数体的外部的变量引用。 函数可以对这个引用值进行访问和赋值;换句话说这个函数被“绑定”在这个变量上。 例如,函数 adder 返回一个闭包。每个闭包都被绑定到其各自的 sum 变量上。 阅读全文

posted @ 2019-07-15 22:53 送欢 阅读(158) 评论(0) 推荐(0)

go map的定义和使用 键值对存储
摘要:定义map var m map[string]int //定义map 初始化map m = make(map[string]int) //初始化map 修改map中ok 的值 m["ok"] =123 删除元素 delete(m, "Answer") 删除key=Answer的元素 定义map va 阅读全文

posted @ 2019-07-15 22:30 送欢 阅读(7088) 评论(0) 推荐(0)

go 通过赋值给 _ 来忽略序号和值
摘要:go 语言中 只要想忽略的值都需要用 下划线 _ 来代替 package main import "fmt" func main() { pow := make([]int, 10) for i := range pow { pow[i] = 1 << uint(i) } //忽略index的值 f 阅读全文

posted @ 2019-07-15 22:19 送欢 阅读(154) 评论(0) 推荐(0)

go for range 可以方便的对slice 切片或者 map 进行迭代循环
摘要:package main import ( "fmt" "math/rand" "time" ) func main() { //遍历切片 data := make([]int, 10) for index, val := range data { fmt.Println(index, val) } 阅读全文

posted @ 2019-07-15 22:14 送欢 阅读(427) 评论(0) 推荐(0)

go 构造切片slice
摘要:定义切片 make([]int, 5) 长度和容量均为5 make([]int, 0, 5) 长度为0 容量为0 切片 slice2[3:5] 对slice2进行切片返回 第3 4 两个元素 不包含index=5这个元素 package main import "fmt" func main() { 阅读全文

posted @ 2019-07-15 22:00 送欢 阅读(461) 评论(0) 推荐(0)

go slice切片注意跟数组的区别
摘要:一个 slice 会指向一个序列的值,并且包含了长度信息。 []T 是一个元素类型为 T 的 slice。 [2]string 这样定义久是字符数组 []string 这样定义就是切片 表面上看切片就是不指定长度的数组 package main import "fmt" func main() { 阅读全文

posted @ 2019-07-15 20:32 送欢 阅读(206) 评论(0) 推荐(0)

1 2 下一页

导航