使用 go get 时可以配合附加参数显示更多的信息及实现特殊的下载和安装操作
[table id=2 /]
接口定义:
[codesyntax lang="c"]
package testPlugin
type PluginFunc interface {
Hello()
World()
}
type Plugins struct {
Plist map[string]PluginFunc
}
func (p *Plugins) Init() {
p.Plist = make(m...
[codesyntax lang="c"]
package main
import "fmt"
func max(l []int) (max int) {
max = l[0]
for _, v := range l {
if v > max {
max = v
}
}
return
}
func min(l []int) (min int) {
min =...
[codesyntax lang="c"]
package main
import (
"fmt"
"math/rand"
"time"
)
//生成count个[start,end)结束的不重复的随机数
func GenerateRandomNumber(start int, end int, count int) []int {
//范围检查
if end...
[codesyntax lang="c"]
package main
import (
"fmt"
)
func test() int {
defer func() {
err := recover()
if err != nil {
fmt.Println(err)
}
}()
var a int = 10
var b int = 0
return a/b
}
...
[codesyntax lang="c"]
package main
import (
"fmt"
"strings"
)
// 构建闭包,判断传入的 name 是否包含 suffix 后缀,如果不包含,则添加后缀
// 如果包含,则直接返回 name
func dealSuffix(suffix string) func(st...
代码:
[codesyntax lang="c"]
package main
import "fmt"
var a = test()
func test() int {
fmt.Println("全局变量。。。")
return 90
}
func init() {
fmt.Println("init 方法。。", a)
}
func main()...
最近在项目中遇到一个很奇怪的问题,因为修改配置(redis中缓存的),nginx服务突然报upstream timed out (110: Connection timed out),然后去查为什么会出现这样的问题,发现出问题的服务是一个golang的http server,查看程序日志,...
[codesyntax lang="c"]
package main
import (
"fmt"
"sort"
)
func main() {
mapInfo := map[string]int32{
"roy":18,
"kitty":16,
"hugo":21,
"tina":35,
"jason":23,
}
type peroson struct {
...
配置相关依赖包:
[codesyntax lang="bash"]
mkdir -p $GOPATH/src/golang.org/x
cd $GOPATH/src/golang.org/x
git clone https://github.com/golang/net.git
git clone https://github.com/golang/crypto.git
go get github....
懒汉模式
这种方式实现起来特别简单,直接判断一个实力是不是为nil, 如果是,则新生成;否则返回已有的。但它和多数语言一样,只适合用在单线程。
[codesyntax lang="c"]
type SingleTon struct {
}
var instance *SingleTo...
Go语言标准库内建提供了net/http包
处理HTTP请求
使用 net/http 包提供的 http.ListenAndServe() 方法,可以在指定的地址进行监听, 开启一个HTTP,服务端该方法的原型如下:
func ListenAndServe(addr string, handler Handler)...
JSON
Go语言内置的encoding/json 标准库
插件:github.com/pquerna/ffjson
JSON编码:func Marshal(v interface{}) ([]byte, error)
JSON解码:func Unmarshal(data []byte, v interface{}) error
[codesyntax lang="c"]...
协程
与传统的系统级线程和进程相比,协程的大优势在于其“轻量级”,可以轻松创建上百万个而不会导致系统资源衰竭,而线程和进程通常多也不能超过1万个。这也是协程也叫轻量级线程的原因。
goroutine--Go对协程的实现 :
go + ...
面向对象
[codesyntax lang="c"]
// main
package main
import (
"fmt"
)
/*func compare(a, b int) bool {
return a < b
}*/
type Point struct {
px float32
py float32
}
func (point *Point) setXY(...