作者: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语言编程
编辑
错误 和 异常 处理是程序的重要组成部分,我们先看看下面几个问题:
- 错误 和 异常 如何区分?
- 错误处理的方式有哪几种?
- 什么时候需要使用异常终止程序?
- 什么时候需要捕获异常?
- ...
作者: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语言编程
编辑
作者: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 模板引擎 的基本用法: