Go 若干技巧
此文来自 http://denvergophers.com/2013-09/tips-and-tricks.slide
###本文主要涉及到:
1. formatting 技巧
2. 异常处理技巧
3. 函数返回值的一致性
###代码资源:
https://denvergophers.com/tips-and-tricks
http://golang.org/pkg/fmt
http://godoc.org/code.google.com/p/go.tools/present
## fmt包
使用如下格式导入:
import "fmt"
普通占位符:
%v 相应值的默认格式
%+v 在打印结构体时,会添加字段名
%#v 相应值的Go语法表示
%T 相应值的类型的Go语法表示
%% 字面上的百分号,并非值的占位符
### fmt一般用法 - 简单字符串
var foo string = "This is a simple string"
fmt.Printf("%v\n", foo)
fmt.Printf("%T\n", foo)
### fmt一般用法 - 结构(struct)
首先,准备好结构
type (
Customer struct {
Name string
Street []string
City string
State string
Zip string
}
Item struct {
Id int
Name string
Quantity int
}
Items []Item
Order struct {
Id int
Customer Customer
Items Items
}
)
关于结构格式化的一些技巧:
// 这是我调试时的默认格式
fmt.Printf("%+v\n\n", order)
// 当我需要知道这个变量的有关结构时我会用这种方法
fmt.Printf("%#v\n\n", order)
// 我很少使用这些
fmt.Printf("%v\n\n", order)
fmt.Printf("%s\n\n", order)
fmt.Printf("%T\n", order)
### fmt - 使用errors.New()生成Errors
这是我最不喜欢看到的创建异常的方式:
import (
"errors"
"fmt"
"log"
)
func main() {
if err := iDunBlowedUp(-100); err != nil {
err = errors.New(fmt.Sprintf("Something went wrong: %s\n", err))
log.Println(err)
return
}
fmt.Printf("Success!")
}
func iDunBlowedUp(val int) error {
return errors.New(fmt.Sprintf("invalid value %d", val))
}
我是这么创建异常的:
import (
"fmt"
"log"
)
func main() {
if err := iDunBlowedUp(-100); err != nil {
err = fmt.Errorf("Something went wrong: %s\n", err)
log.Println(err)
return
}
fmt.Printf("Success!")
}
func iDunBlowedUp(val int) error {
return fmt.Errorf("invalid value %d", val)
}
### fmt - 函数返回值的一致性
坏习惯:
func someFunction(val int) (ok bool, err error) {
if val == 0 {
return false, nil
}
if val
Go 若干技巧的更多相关文章
- 使用Flex4容器若干技巧
本文适用于正在寻找使用Flex 4容器和布局的快速参考指南的开发人员. 尽管这不一定是一个复杂问题,但这似乎是许多开发人员的挫折的来源,特别是对于那些Flex刚刚入门的开发人员. 当开发人员不知道如何 ...
- Excel 2007 若干技巧。
1.自定义序列 office按钮→excel选项→常用→编辑自定义列表 2.无法清空剪贴板错误的处理办法: 取消"显示粘贴选项"选项 3.每次选定同一单元格 输入后按ctrl+En ...
- 盘点Linux内核源码中使用宏定义的若干技巧(1)
http://blog.chinaunix.net/uid-23769728-id-3141515.html
- VS2013日常使用若干技巧+快捷键
1.注释的方法 1)sqlserver中,单行注释:— — 多行注释:/* 代码 */ 2)C#中,单行注释:// 多行注释:/* 代码 */ 3)C#中多行注释的快捷方式:先选中你要注 ...
- Flex移动应用程序开发的技巧和窍门(一)
这是一个由多个部分组成的系列文章的第一部分,它包含了Flex移动开发的若干技巧.如果你过去习惯于桌面和Web编程,你会发现,开发移动应用程序将面临一系列新的挑战. 除了重新思考你的对数据存储和处理的策 ...
- 最大化 AIX 上的 Java 性能,第 4 部分: 监视流量
http://www.ibm.com/developerworks/cn/aix/library/es-Javaperf/es-Javaperf4.html 最大化 AIX 上的 Java 性能,第 ...
- 最大化 AIX 上的 Java 性能,第 3 部分: 更多就是更好
http://www.ibm.com/developerworks/cn/aix/library/es-Javaperf/es-Javaperf3.html 最大化 AIX 上的 Java 性能,第 ...
- 最大化 AIX 上的 Java 性能,第 2 部分: 速度需求
http://www.ibm.com/developerworks/cn/aix/library/es-Javaperf/es-Javaperf2.html 最大化 AIX 上的 Java 性能,第 ...
- 最大化 AIX 上的 Java 性能,第 1 部分: 基础
http://www.ibm.com/developerworks/cn/aix/library/es-Javaperf/es-Javaperf1.html 最大化 AIX 上的 Java 性能,第 ...
随机推荐
- Windows 8.1 应用再出发 - 磁贴的更新
本篇和大家一起了解一下Windows 8.1 中磁贴的更新,我们来看看如何利用它做出更好的应用磁贴. 首先我们从展现形式上来对比一下Windows 8 与 Windows 8.1 中的磁贴: Wind ...
- Android的项目不能直接引用可移植类库的项目解决方法
深圳_exception() 10:25:51 Android的项目不能直接引用可移植类库的项目,但是可以引用可移植类库生成的dll,这就意味着无法直接断电调试可移植类库上海-黄药师() 10:26: ...
- 备份数据库的时候设置 BufferCount 选项不正确导致 out of memory 的情况
备份数据库的时候设置 BufferCount 选项不正确导致 out of memory 的情况 今天群里面的东辉兄跟我说备份生产数据库的时候报错 环境: 32位的SQLSERVER2008 机器有1 ...
- 我的Linux随笔目录
现在整理博客的时间少了,大多是在用为知笔记收藏和整理,一次集中发点Linux相关随笔整理和一个目录,是按时间顺序来的.每一篇都是自己用过之后整理的,应用场景已经尽可能的说明了,不明白的可以Q我,上班时 ...
- Linux下oracle11gR2系统安装到数据库建立配置及最后oracle的dmp文件导入一站式操作记录
简介 之前也在linux下安装过oralce,可每次都是迷迷糊糊的,因为大脑一片空白,网上随便看见一个文档就直接复制,最后搞了乱七八糟,虽然装上了,却乱得很,现在记录下来,希望能给其他网上朋友遇到问题 ...
- [转]15年双11手淘前端技术巡演 - H5性能最佳实践
[原文地址]:https://github.com/amfe/article/issues/21 前言 2015年是全面『无线化』的一年,在BAT(财报)几家公司都已经超过50%的流量来自移动端,这次 ...
- TypeScript:基本类型和接口
返回TypeScript手册总目录 基本类型(Basic Types) 为了让程序可以使用,我们需要用到一些最简单的数据单元:数字,字符串,结构,布尔值,诸如此类.在TypeScript中,支持许多正 ...
- Ubuntu配置git
安装ssh sudo apt-get install openssh-server sudo apt-get install openssh-client 启动SSH服务 sudo /etc/init ...
- xampp连接Admin界面报错
报错信息: phpMyAdmin tried to connect to the MySQL server, and the server rejected the connection. You s ...
- 如何试用Office 365 及 SharePoint Online(美版)
Office 365已经在国外运营一段时间了,本文主要帮助大家注册一个试用账户.废话少说按步骤来: 进入注册页面,链接地址 . 1. 对于不同的企业,提供了不同的套餐,这里我们试用这个中等企业的套餐, ...