不灭的焱

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

作者:AlbertWen  添加时间:2017-10-29 10:29:01  修改时间:2026-06-18 08:27:10  分类:21.Go语言编程  编辑

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)
}
作者:AlbertWen  添加时间:2017-10-29 09:01:38  修改时间:2026-06-18 11:58:12  分类:21.Go语言编程  编辑

项目目录结构如何组织,一般语言都是没有规定。但 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 目录中新建一个文件夹。

作者:AlbertWen  添加时间:2017-10-29 20:57:58  修改时间:2026-06-18 19:05:35  分类:21.Go语言编程  编辑
import (
     "unicode"
)

func Ucfirst(str string) string {
    for i, v := range str {
        return string(unicode.ToUpper(v)) + str[i+1:]
    }
    return ""
}

func Lcfirst(str string) string {
    for i, v := range str {
        return string(unicode.ToLower(v)) + str[i+1:]
    }
    return ""
}

 

作者:AlbertWen  添加时间:2017-10-27 12:58:57  修改时间:2026-06-10 18:47:46  分类:21.Go语言编程  编辑

Package builtin

import "builtin"

Overview

Index

Overview ▾

Package builtin provides documentation for Go's predeclared identifiers. The items documented here are not actually in package builtin but their descriptions here allow godoc to present documentation for the language's special identifiers.

作者:AlbertWen  添加时间:2017-10-29 20:46:53  修改时间:2026-06-18 19:58:22  分类:21.Go语言编程  编辑

错误 和 异常 处理是程序的重要组成部分,我们先看看下面几个问题:

  1. 错误 和 异常 如何区分?
  2. 错误处理的方式有哪几种?
  3. 什么时候需要使用异常终止程序?
  4. 什么时候需要捕获异常?
  5. ...
作者:AlbertWen  添加时间:2017-10-18 17:18:38  修改时间:2026-06-17 07:54:15  分类:21.Go语言编程  编辑
作者:AlbertWen  添加时间:2017-10-27 12:43:24  修改时间:2026-06-16 12:55:36  分类:21.Go语言编程  编辑

定义变量

Go 语言里面定义变量有多种方式。

使用 var 关键字是 Go 最基本的定义变量方式,与 C 语言不同的是 Go 把变量类型放在变量名后面:

// 定义一个名称为“variableName”,类型为"type"的变量
var variableName type
作者:AlbertWen  添加时间:2017-10-27 13:01:20  修改时间:2026-06-18 21:24:06  分类:21.Go语言编程  编辑

1、谷歌官方维护了一个基于go语言的开源项目列表:https://github.com/golang/go/wiki/Projects

2、[知乎网] 有哪些值得学习的 Go 语言开源项目?

作者:AlbertWen  添加时间:2017-10-29 09:45:21  修改时间:2026-06-16 22:48:04  分类:21.Go语言编程  编辑

官方收藏的项目

集成开发平台:基于 Golang 的快速开发平台,平台已经集成权限管理,菜单资源管理,域管理,角色管理,用户管理,组织架构管理,操作日志管理等等

OPMS - 是一款项目管理 + OA管理的免费开源软件。功能精简实用,满足日常的工作需求,特别适合扁平化项目和团队管理。

作者:AlbertWen  添加时间:2017-10-29 20:52:30  修改时间:2026-06-18 05:00:21  分类:21.Go语言编程  编辑

通过以下文章,掌握了 Go 模板引擎 的基本用法: