不灭的焱

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

作者:Albert.Wen  添加时间:2020-05-01 00:25:15  修改时间:2024-05-05 13:26:43  分类:Golang/Ruby  编辑

UniDAC 是一款通用数据库访问组件,提供了多个数据库的直接访问,如针对Windows的Delphi, C++Builder, Lazarus (以及 Free Pascal) , Mac OS X, iOS, Android, Linux和64和32位的FreeBSD等等。

作者:Albert.Wen  添加时间:2020-04-30 22:30:04  修改时间:2024-05-05 22:24:42  分类:Golang/Ruby  编辑

安装 EhLib 9.4.15 时报错:'package bdertl'not found

解决方法:

安装时,去掉勾选:BDE DataDrivers,因为 XE7 已经不再支持 BDE

作者:Albert.Wen  添加时间:2017-10-29 19:27:18  修改时间:2024-04-20 01:32:26  分类:Golang/Ruby  编辑

2016年国庆节(10月1日)开始接触 Go 语言,记录一下它的 版本发布 与 TIOBE 排名:

Golang 排行榜
月份 版本 排名 备注
2012.03 1.0    
       
2015.08 1.5.0   v1.5 发布,完全移除 C,使用 Go 编译 Go
2015.09 1.5.1    
2015.12 1.5.2    
作者:Albert.Wen  添加时间:2017-10-18 17:16:43  修改时间:2024-04-21 20:10:43  分类:Golang/Ruby  编辑

序言

看过很多方面的编码规范,可能每一家公司都有不同的规范,这份编码规范是写给我自己的,同时希望我们公司内部同事也能遵循这个规范来写Go代码。

如果你的代码没有办法找到下面的规范,那么就遵循标准库的规范,多阅读标准库的源码,标准库的代码可以说是我们写代码参考的标杆。

格式化规范

go默认已经有了gofmt工具,但是我们强烈建议使用goimport工具,这个在gofmt的基础上增加了自动删除和引入包。

go get golang.org/x/tools/cmd/goimports
作者:Albert.Wen  添加时间:2017-10-27 12:52:47  修改时间:2024-04-30 04:32:07  分类:Golang/Ruby  编辑

method

现在假设有这么一个场景,你定义了一个struct叫做长方形,你现在想要计算他的面积,那么按照我们一般的思路应该会用下面的方式来实现

package main
import "fmt"

type Rectangle struct {
    width, height float64
}

func area(r Rectangle) float64 {
    return r.width*r.height
}

func main() {
    r1 := Rectangle{12, 2}
    r2 := Rectangle{9, 4}
    fmt.Println("Area of r1 is: ", area(r1))
    fmt.Println("Area of r2 is: ", area(r2))
}

这段代码可以计算出来长方形的面积,但是area()不是作为Rectangle的方法实现的(类似面向对象里面的方法),而是将Rectangle的对象(如r1,r2)作为参数传入函数计算面积的。

作者:Albert.Wen  添加时间:2017-10-29 20:47:55  修改时间:2024-04-23 11:38:28  分类:Golang/Ruby  编辑

关于管道 Channel

  1. Channel 用来同步并发执行的函数并提供它们某种传值交流的机制。
  2. Channel 的一些特性:通过 channel 传递的元素类型、容器(或缓冲区)和 传递的方向由“<-”操作符指定。
  3. c <- 123,把值 123 输入到管道 c,<-c,把管道 c 的值读取到左边,value := <-c,这样就是读到 value 变量里面。
作者:Albert.Wen  添加时间:2017-10-18 17:17:39  修改时间:2024-04-30 04:31:50  分类:Golang/Ruby  编辑
作者:Albert.Wen  添加时间:2017-10-23 14:15:14  修改时间:2024-05-03 09:20:04  分类:Golang/Ruby  编辑

Golang 定位解决分布式系统,服务器应用开发,主要竞争对手是 Java、Python 之类;Rust 定位解决单机安全问题,高性能场景偏系统底层开发,主要竞争对手就是 C 和 C++。

作者:Albert.Wen  添加时间:2017-10-29 10:29:01  修改时间:2024-05-06 05:47:23  分类:Golang/Ruby  编辑

golang 编码 json 还比较简单,而解析 json 则非常蛋疼。不像 PHP 一句 json_decode() 就能搞定。之前项目开发中,为了兼容不同客户端的需求,请求的 content-type 可以是 json,也可以是 www-x-urlencode。然后某天前端希望某个后端服务提供 json 的处理,而当时后端使用 java 实现了 www-x-urlencode 的请求,对于突然希望提供 json 处理产生了极大的情绪。当时不太理解,现在看来,对于静态语言解析未知的 JSON 确实是一项挑战。

定义结构

与编码 json 的 Marshal 类似,解析 json 也提供了 Unmarshal 方法。对于解析 json,也大致分两步,首先定义结构,然后调用 Unmarshal 方法序列化。我们先从简单的例子开始吧。

type Account struct {
	Email    string  `json:"email"`
	Password string  `json:"password"`
	Money    float64 `json:"money"`
}

var jsonString string = `{
	"email": "phpgo@163.com",
	"password" : "123456",
	"money" : 100.5
}`

func main() {

	account := Account{}
	err := json.Unmarshal([]byte(jsonString), &account)
	if err != nil {
		log.Fatal(err)
	}

	fmt.Printf("%+v\n", account)
}
作者:Albert.Wen  添加时间:2017-10-29 09:01:38  修改时间:2024-04-29 03:32:01  分类:Golang/Ruby  编辑

项目目录结构如何组织,一般语言都是没有规定。但 Go 语言这方面做了规定,这样可以保持一致性

1、一般的,一个 Go 项目在 GOPATH 下,会有如下三个目录:

|--bin
|--pkg
|--src

其中,bin存放编译后的可执行文件;pkg 存放编译后的包文件;src 存放项目源文件。一般,bin 和 pkg 目录可以不创建,go 命令会自动创建(如 go install),只需要创建src目录即可。

对于 pkg 目录,曾经有人问:我把 Go 中的包放入 pkg 下面,怎么不行啊?他直接把 Go 包的源文件放入了 pkg 中。这显然是不对的。pkg 中的文件是 Go 编译生成的,而不是手动放进去的。(一般文件后缀.a)

对于 src 目录,存放源文件,Go 中源文件以包(package)的形式组织。通常,新建一个包就在 src 目录中新建一个文件夹。