作者:Albert.Wen
添加时间:2017-10-29 21:06:07
修改时间:2024-05-16 05:08:16
分类:
Golang/Ruby
编辑
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 标明。
作者:Albert.Wen
添加时间:2017-10-29 09:18:25
修改时间:2024-05-10 17:31:58
分类:
Golang/Ruby
编辑
一、定义
方法 是与对象实例绑定的特殊函数。
方法 是面向对象编程的基本概念,用于维护和展示对象的自身状态。对象是内敛的,每个实例都有各自不同的独立特征,以 属性 和 方法 来暴露对外通信接口。普通函数则专注于算法流程,通过接收参数来完成特定逻辑运算,并返回最终结果。换句话说,方法是有关联状态的,而函数通常没有。
方法 和 函数 定义语法区别的在于前者有 前置实例 接收参数(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
作者:Albert.Wen
添加时间:2017-10-29 20:50:23
修改时间:2024-04-25 07:10:17
分类:
Golang/Ruby
编辑
摘录一:
Go 1.3 的 sync 包中加入一个新特性:Pool。
官方文档可以看这里 http://golang.org/pkg/sync/#Pool
这个类设计的目的是用来保存和复用临时对象,以减少内存分配,降低CG压力。
作者:Albert.Wen
添加时间:2017-10-29 20:30:53
修改时间:2024-05-15 08:15:03
分类:
Golang/Ruby
编辑
通常情况下,函数向其调用方报告错误的方式都是返回一个 error 类型的值。但是,当遇到致命错误的时候,很可能会使程序无法继续运行。这时,上述错误处理方式就太不适合了,Go 推荐通过调用 panic 函数来报告致命错误。
作者:Albert.Wen
添加时间:2018-04-09 16:09:48
修改时间:2024-05-04 07:59:15
分类:
Golang/Ruby
编辑
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
}
作者:Albert.Wen
添加时间:2017-10-27 10:31:30
修改时间:2024-05-19 13:41:45
分类:
Golang/Ruby
编辑
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 。
作者:Albert.Wen
添加时间:2017-10-29 20:38:40
修改时间:2024-05-15 16:32:18
分类:
Golang/Ruby
编辑
1、判断 类型
类似于 JavaScript 中 typeof 和 Java 中 instanceof
var a interface{}
newA, ok := a.(string)
// 如果 ok 是 true,则说明 变量 a 是字符串类型,而 newA 就是 string 类型的变量,a 的实际值
//
作者:Albert.Wen
添加时间:2017-10-29 20:32:50
修改时间:2024-04-30 04:23:14
分类:
Golang/Ruby
编辑
基本类型
基本类型是 Go 语言自带的类型,比如 数值、浮点、字符串、布尔、数组 及 错误 类型,他们本质上是原始类型,也就是不可改变的,所以对他们进行操作,一般都会返回一个新创建的值,所以把这些值传递给函数时,其实传递的是一个值的副本。
作者:Albert.Wen
添加时间:2017-10-27 13:03:08
修改时间:2024-05-09 17:41:16
分类:
Golang/Ruby
编辑
得出以下结论:
1、import 导入的参数是路径,而非包名。
2、尽管习惯将包名和目录名保证一致,但这不是强制规定;
3、在代码中引用包成员时,使用包名而非目录名;
4、同一目录下,所有源文件必须使用相同的包名称(因为导入时使用绝对路径,所以在搜索路径下,包必须有唯一路径,但无须是唯一名字);
5、至于文件名,更没啥限制(扩展名为.go);
作者:Albert.Wen
添加时间:2014-10-08 16:24:36
修改时间:2024-05-15 11:15:18
分类:
Golang/Ruby
编辑
不翻墙的情况下怎么解决这个问题?其实 golang 在 github 上建立了一个镜像库,如 https://github.com/golang/net 即是 https://golang.org/x/net 的镜像库