Golang 和 JSON

2014 年 12 月 08 日 by name5566 Categories: Computer Science, Golang

参考文献列表:
http://blog.golang.org/json-and-go

Golang 提供了 json 包来处理 JSON 相关内容。

编码为 JSON

编码为 JSON 数据使用 Marshal 函数:

func Marshal(v interface{}) ([]byte, error)

看一个具体的例子:

package main

import (
    "encoding/json"
    "fmt"
)

type Message struct {
    Name string
    Body string[......]

继续阅读

没有评论

Golang 的 panic、recover

2014 年 12 月 07 日 by name5566 Categories: Computer Science, Golang

参考文献列表:
http://blog.golang.org/defer-panic-and-recover

panic 是一个内置函数,当一个函数 F 调用 panic,F 的执行就会停止,F 中 deferred 函数调用会被执行,然后 F 返回控制到它的调用者。这个过程会沿着调用栈执行下去,直到当前 goroutine 中的所有函数返回,然后程序 crash。出现 panic 是因为:

  1. 调用了 panic 函数
  2. 出现了运行时错误(例如,数组越界访问)

recover 是一个内置函数,用于恢复一个 panicking goroutine 的控制。需要注意的是,re[……]

继续阅读

没有评论

了解 Golang 的 interface

2014 年 12 月 04 日 by name5566 Categories: Computer Science, Golang

参考文献列表:
http://blog.golang.org/laws-of-reflection

类型和接口

Golang 是静态类型的,每一个变量都有一个静态类型:

type MyInt int

var i int
var j MyInt

这里的 i 静态类型为 int,j 静态类型为 MyInt,它们的静态类型不同,但是有相同的底层类型(underlying type)int。

接口类型是很重要的类型,表示了固定的方法集。一个接口类型变量能够存储实现了此接口所有方法的值。我们看一个例子:

var r io.Reader
r = os.Stdin[......]

继续阅读

没有评论

史玉柱在游戏策划上的一些经验

2014 年 11 月 14 日 by name5566 Categories: 游戏策划

本文内容主要来自《史玉柱自述:我的营销心得

史玉柱策划的经验主要集中在 MMORPG 类。

网络游戏最重要的是游戏性。

玩家的需求

玩家对游戏是有需求的,并且需求还不少,但最重要的需求有几个:

  1. 荣耀。荣耀是最重要的需求(没有之一),荣耀是其他人给予的。一般来说,谈到荣耀,想到的是大号,而忽略了小号的荣耀,如果重视小号的荣耀,对在线人数有很大的帮助。任何的功能都要过荣耀关
  2. 目标。目标分为短、中、长期目标。短期目标可能需要花费几分钟、几小时来完成,中期目标可能需要花费几小时、一整天来完成。对于玩家来说,在任何一个时间节点上,都应该同时有短、中、长期三种目标存在。玩[……]

继续阅读

一条评论

Lua 极简指南(7)— 面向对象的编程

2014 年 10 月 31 日 by name5566 Categories: Computer Science, Lua, Programming in Lua 3rd, Reading Notes

Programming in Lua 3rd》读书笔记

在很多面向对象的语言中有类(class)的概念,对象是类的实例。Lua 中不存在类的概念。Lua 就像 JavaScript 一样是面向原型的语言(http://en.wikipedia.org/wiki/Prototype-based_programming),这类语言使用一个对象表示一个“类”,其他对象(此类的实例)使用此对象作为原型。我们有两个 table p 和 obj,将 p 设置为 obj 的原型(回顾:http://name5566.com/5017.html):

setmetatable(obj, {_[......]

继续阅读

没有评论

Lua 极简指南(6)— 模块

2014 年 10 月 30 日 by name5566 Categories: Computer Science, Lua, Programming in Lua 3rd, Reading Notes

Programming in Lua 3rd》读书笔记

从用户的角度来看,一个模块能够通过 require 加载并返回一个 table,模块导出的接口都被定义在此 table 中(此 table 被作为一个 namespace)。所有的标准库都是模块。标准库被预先加载了,就像这样:

math = require 'math'
string = require 'string'

require 函数

使用 require 函数加载模块能够避免多次重复加载模块。加载一个模块:

require 'modulename'

模块名(modulename)不那么准确[……]

继续阅读

没有评论

Lua 极简指南(5)— 环境

2014 年 10 月 28 日 by name5566 Categories: Computer Science, Lua, Programming in Lua 3rd, Reading Notes

Programming in Lua 3rd》读书笔记

全局环境

Lua 把全局变量放在一个 table _G 中,这个 table 被叫做全局环境(global environment)。打印所有的全局变量名:

for n in pairs(_G) do print(n) end

_ENV(Lua 5.2 开始支持)

对于一个 free name(名字没有绑定任何声明)var 实际上会被转换为 _ENV.var(每个 chunk 中都会存在一个名为 _ENV 的变量):

v1 = 1
local v2 = 2
print(_ENV.v1)  -->[......]

继续阅读

没有评论

Lua 极简指南(4)— Metatables

 by name5566 Categories: Computer Science, Lua

http://name5566.com/305.html

没有评论

Lua 极简指南(3)— 编译、错误

 by name5566 Categories: Computer Science, Lua, Programming in Lua 3rd, Reading Notes

Programming in Lua 3rd》读书笔记

编译

Lua 虽然是解释性语言,但 Lua 源码总是被编译为中间形式后再执行。

dofile 用于载入并执行一个 Lua 文件,相比之下,loadfile 用于载入一个 Lua 文件,但并不执行,确切的说 loadfile 编译了一个 chunk,并返回此被编译的 chunk(被作为一个函数):

c = loadfile('./test.lua')
c()

dofile 可以被实现为:

function dofile(filename)
    local f = assert(loadfile(fi[......]

继续阅读

没有评论

Lua 极简指南(2)— 函数

2014 年 10 月 24 日 by name5566 Categories: Computer Science, Lua, Programming in Lua 3rd, Reading Notes

Programming in Lua 3rd》读书笔记

Lua 和其他很多语言一样,函数调用时参数列表被包裹在括号中:

print('Hello World')

特别的情况是,如果函数调用时只有一个参数,并且此参数为字符串 literal(字面量)或者 table 构造器(constructor)时,包裹参数的括号可以省略:

print 'Hello World' <--> print('Hello World')
type{}              <--> type({})

Lua 为面向对象的调用提供了特殊的语法:

[......]

继续阅读

没有评论