作者:AlbertWen
添加时间:2017-11-23 13:12:29
修改时间:2026-06-23 08:23:18
分类:
21.Go语言编程
编辑
简介
Golang 中的创建一个新的 goroutine , 并不会返回像c语言类似的pid,所有我们不能从外部杀死某个goroutine,所有我就得让它自己结束,之前我们用 channel + select 的方式,来解决这个问题,但是有些场景实现起来比较麻烦,例如由一个请求衍生出的各个 goroutine 之间需要满足一定的约束关系,以实现一些诸如有效期,中止routine树,传递请求全局变量之类的功能。于是google 就为我们提供一个解决方案,开源了 context 包。使用 context 实现上下文功能约定需要在你的方法的传入参数的第一个传入一个 context.Context 类型的变量。
作者:AlbertWen
添加时间:2017-10-27 12:52:02
修改时间:2026-06-22 11:46:58
分类:
21.Go语言编程
编辑
struct
Go语言中,也和C或者其他语言一样,我们可以声明新的类型,作为其它类型的属性或字段的容器。例如,我们可以创建一个自定义类型person代表一个人的实体。这个实体拥有属性:姓名和年龄。这样的类型我们称之struct。如下代码所示:
type person struct {
name string
age int
}
作者:AlbertWen
添加时间:2017-10-29 21:06:07
修改时间:2026-06-22 19:39:54
分类:
21.Go语言编程
编辑
interface简介
Go 语言以简单易上手而著称,它的语法非常简单,熟悉 C++,Java 的开发者只需要很短的时间就可以掌握 Go 语言的基本用法。
interface 是 Go 语言里所提供的非常重要的特性。一个 interface 里可以定义一个或者多个函数,例如系统自带的 io.ReadWriter 的定义如下所示:
type ReadWriter interface {
Read(b []byte) (n int, err error)
Write(b []byte) (n int, err error)
}
任何类型只要它提供了 Read 和 Write 的绑定函数实现,Go 就认为这个类型实现了这个 interface(duck-type),而不像 Java 需要开发者使用 implements 标明。
作者:AlbertWen
添加时间:2017-10-29 09:18:25
修改时间:2026-06-23 17:46:53
分类:
21.Go语言编程
编辑
一、定义
方法 是与对象实例绑定的特殊函数。
方法 是面向对象编程的基本概念,用于维护和展示对象的自身状态。对象是内敛的,每个实例都有各自不同的独立特征,以 属性 和 方法 来暴露对外通信接口。普通函数则专注于算法流程,通过接收参数来完成特定逻辑运算,并返回最终结果。换句话说,方法是有关联状态的,而函数通常没有。
方法 和 函数 定义语法区别的在于前者有 前置实例 接收参数(receiver),编译器以此确定方法所属类型。在某些语言里,尽管没有显示定义,但会在调用时隐式传递 this 实例参数。
可以为 当前包,以及除 接口 和 指针 以外的任何类型定义方法。
type N int
func (n N) toString() string {
return fmt.Sprintf("%#x", n)
}
func main() {
var a N = 5
println(a.toString())
}
输出:
0x19
作者:AlbertWen
添加时间:2017-10-29 20:50:23
修改时间:2026-06-20 20:45:24
分类:
21.Go语言编程
编辑
摘录一:
Go 1.3 的 sync 包中加入一个新特性:Pool。
官方文档可以看这里 http://golang.org/pkg/sync/#Pool
这个类设计的目的是用来保存和复用临时对象,以减少内存分配,降低CG压力。
作者:AlbertWen
添加时间:2017-10-29 20:30:53
修改时间:2026-06-22 20:53:15
分类:
21.Go语言编程
编辑
通常情况下,函数向其调用方报告错误的方式都是返回一个 error 类型的值。但是,当遇到致命错误的时候,很可能会使程序无法继续运行。这时,上述错误处理方式就太不适合了,Go 推荐通过调用 panic 函数来报告致命错误。
作者:AlbertWen
添加时间:2018-04-09 16:09:48
修改时间:2026-06-13 03:33:25
分类:
21.Go语言编程
编辑
Go里面有很多方式返回一个struct的值或者slice,我们经常会看到的是如下的代码:
type MyStruct struct {
Val int
}
func myfunc() MyStruct {
return MyStruct{Val: 1}
}
func myfunc() *MyStruct {
return &MyStruct{}
}
func myfunc(s *MyStruct) {
s.Val = 1
}
作者:AlbertWen
添加时间:2017-10-27 10:31:30
修改时间:2026-06-24 02:06:40
分类:
21.Go语言编程
编辑
Go安装
Windows 安装
访问 Golang Code 下载页,32 位请选择名称中包含 windows-386 的 msi 安装包,64 位请选择名称中包含 windows-amd64 的。下载好后运行,默认安装目录为 C:/Go,我选择安装到 D:/go/go。安装完成后默认会在环境变量 Path 后添加 Go 安装目录下的 bin 目录 D:/go/go/bin,并添加环境变量 GOROOT,值为 Go 安装根目录 D:/go/go 。
作者:AlbertWen
添加时间:2017-10-29 20:38:40
修改时间:2026-06-22 01:34:44
分类:
21.Go语言编程
编辑
1、判断 类型
类似于 JavaScript 中 typeof 和 Java 中 instanceof
var a interface{}
newA, ok := a.(string)
// 如果 ok 是 true,则说明 变量 a 是字符串类型,而 newA 就是 string 类型的变量,a 的实际值
//
作者:AlbertWen
添加时间:2017-10-29 20:32:50
修改时间:2026-06-21 14:01:28
分类:
21.Go语言编程
编辑
基本类型
基本类型是 Go 语言自带的类型,比如 数值、浮点、字符串、布尔、数组 及 错误 类型,他们本质上是原始类型,也就是不可改变的,所以对他们进行操作,一般都会返回一个新创建的值,所以把这些值传递给函数时,其实传递的是一个值的副本。