不灭的焱

革命尚未成功,同志仍须努力下载JDK17

作者: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 的镜像库