golang零碎(一)

cane · · 1483 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

今天看了下labrpc模块,学习了相关的golang语法。总结下

map

interface{},空的可以表示任何类型,类似java的object

struct

new 初始化零值

make map slice channel

func MakeNetwork() *Network {
	rn := &Network{}
	rn.reliable = true
	rn.ends = map[interface{}]*ClientEnd{}
	rn.enabled = map[interface{}]bool{}
	rn.servers = map[interface{}]*Server{}
	rn.connections = map[interface{}](interface{}){}
	return rn
}
上面的函数指定了很多初始化方法
func (rn *Network) ReadEndnameInfo(endname interface{}) (bool, interface{}, *Server, bool) {
	rn.mu.Lock()
	defer rn.mu.Unlock()

	enabled := rn.enabled[endname]
	servername := rn.connections[endname]
	var server *Server
	if servername != nil {
		server = rn.servers[servername]
	}
	reliable := rn.reliable
	return enabled, servername, server, reliable
}

 interface{}表示任何类型

 

func (rn *Network) IsServerDead(endname interface{}, servername interface{}, server *Server) bool {
	rn.mu.Lock()
	defer rn.mu.Unlock()

	if rn.enabled[endname] == false || rn.servers[servername] != server {
		return true
	}
	return false
}
定义struct的方法

有疑问加站长微信联系(非本文作者)

本文来自:博客园

感谢作者:cane

查看原文:golang零碎(一)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1483 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传