if
if也许是各种编程语言中最常见的了,它的语法概括起来就是:如果满足条件就做某事,否则做另一件事。
Go里面if条件判断语句中不需要括号,如下代码所示
if x > 10 { fmt.Println("x is greater than 10") } else { fmt.Println("x is less than 10") }
if也许是各种编程语言中最常见的了,它的语法概括起来就是:如果满足条件就做某事,否则做另一件事。
Go里面if条件判断语句中不需要括号,如下代码所示
if x > 10 { fmt.Println("x is greater than 10") } else { fmt.Println("x is less than 10") }
Java程序员10分钟可上手的Golang框架,gin+xorm 搭建的 web 框架 restgo
Golang实战使用gin+xorm搭建go语言web框架restgo详解1.1 go语言的困境
Golang实战使用gin+xorm搭建go语言web框架restgo详解1.2 我要做什么
Golang的主要 设计目标之一就是面向大规模后端服务程序,网络通信这块是服务端 程序必不可少也是至关重要的一部分。在日常应用中,我们也可以看到Go中的net以及其subdirectories下的包均是“高频+刚需”,而TCP socket则是网络编程的主流,即便您没有直接使用到net中有关TCP Socket方面的接口,但net/http总是用到了吧,http底层依旧是用tcp socket实现的。
context
是Go中广泛使用的程序包,由Google官方开发,在1.7版本引入。它用来简化在多个go routine传递上下文数据、(手动/超时)中止routine树等操作,比如,官方http包使用context传递请求的上下文数据,gRpc使用context来终止某个请求产生的routine树。由于它使用简单,现在基本成了编写go基础库的通用规范。笔者在使用context上有一些经验,遂分享下。
原文:Fundamentals of concurrent programming
译者:youngsterxyf
本文是一篇并发编程方面的入门文章,以Go语言编写示例代码,内容涵盖:
pack.sh
#!/bin/sh export GOARCH=amd64 export GOOS=linux bee_wjb pack -exp="pack.sh:_readme:README.md:glide:bee.json:app/view:data/cache:data/log:data/upload:vendor"
golang 的 nil 在概念上和其它语言的 null、None、nil、NULL一样,都指代零值或空值。nil 是预先说明的标识符,也即通常意义上的关键字。在 golang 中,nil 只能赋值给 指针、channel、func、interface、map 或 slice 类型的变量。如果未遵循这个规则,则会引发 panic。对此官方有明确的说明:http://pkg.golang.org/pkg/builtin/#Type
go doc 命令可以打印附于Go语言程序 实体 上的文档。我们可以通过把程序实体的标识符作为该命令的参数来达到查看其文档的目的。
插播:所谓 Go语言的 程序实体,是指变量、常量、函数、结构体以及接口。而程序实体的 标识符 即是代表它们的名称。标识符又分 非限定标识符 和 限定标识符。其中,限定标识符 一般用于表示某个代码包中的程序实体或者某个结构体类型中的方法或字段。例如,标准库代码包 io 中的名为 EOF 的变量用限定标识符表示即 io.EOF。又例如,如果我有一个 sync.WaitGroup 类型的变量 wg 并且想调用它的 Add 方法,那么可以这样写 wg.Add()。其中,wg.Add 就是一个限定标识符,而后面的()则代表了调用操作。
package main import ( "crypto/md5" "encoding/hex" "fmt" "io" ) // 官网的例子:http://golang.org/pkg/crypto/md5/ func main() { str := "123456" // 需要加密的字符串 h := md5.New() io.WriteString(h, str) fmt.Printf("%x\n", h.Sum(nil)) // 输出加密结果 c := md5.New() c.Write([]byte(str)) fmt.Printf("%s\n", hex.EncodeToString(c.Sum(nil))) // 输出加密结果(项目中,用这个) }