Golang中国

Simbory

做我自己

Golang China 第 4305 号会员,加入于 2015-09-21 18:19


Simbory最近创建的主题


2 go1.8看来是很快就要出来了
公告Simbory • 2016-11-18 16:51 • 最后回复来自 stevewang
1 关于golang map内存回收
问与答Simbory • 2016-11-17 11:11 • 最后回复来自 1851616111
推荐一个web框架wemvc
Web开发Simbory • 2016-08-29 23:11
6 Go 1.5.2 发布
Web开发Simbory • 2015-12-14 23:32 • 最后回复来自 sivolin
35 还在寻找Go语言IDE的同志请注意了
开发工具Simbory • 2016-07-19 16:49 • 最后回复来自 fugees
Simbory 创建的更多主题

Simbory最近回复了


回复了 dongsong1117 创建的主题: JetBrains 推出了 Golang IDE - Gogland 2016-12-16 11:39

哈哈哈,Jetbrains 还给我发了邮件:

回复了 ssqq 创建的主题: 16进制字符串转换成数字 2016-11-24 15:30

strconv.ParseInt(s string, base int, bitSize int)第二个参数base设置为0时,该函数会自动识别数字格式进行转换。以下是go语言源代码里面的注释:

If base == 0, the base is implied by the string's prefix: base 16 for "0x", base 8 for "0", and base 10 otherwise.

翻译一下:如果base为0,base的值会根据字符串s起始自动进行判断:如果字符串以0x开始,base=16;如果字符串以0开始base=8;以其他字符串开始base=10

回复了 uncleyang 创建的主题: 继承父类后,覆盖父类中的方法(父类调用子类方法) 2016-11-24 15:17

只能是子结构体调用父结构体的方法,比如:

package main

type Animal struct {
}

func (a *Animal) Eat() {
    println("Animal eat")
}

type Cat struct {
    Animal
}

func (c *Cat) Eat() {
    println("Cat eat")
}

func main() {
    cat := Cat{}
    cat.Eat()
    cat.Animal.Eat()
}

输出结果为:

Cat eat
Animal eat

如果你要反过来了的话建议采用interface,将方法抽象出来。比如上面的代码可改为:

package main

type Eatable interface {
    Eat()
}

type Animal struct {
}

func (a *Animal) Eat() {
    println("Animal eat")
}

type Cat struct {
    Animal
}

func (c *Cat) Eat() {
    println("Cat eat")
}

func main() {
    var eatable Eatable
    eatable = &Animal{}
    eatable.Eat()

    eatable = &Cat{}
    eatable.Eat()
}

输出结果为:

Animal eat
Cat eat
回复了 fighter 创建的主题: var wg sync.WaitGroup wg.Add(1) wg为什么不需要初始化 2016-11-22 14:39

struct是值类型,而WaitGroup明显是一个struct,你的这一句话var wg sync.WaitGroup就相当于var num int64。声明变量wg的时候就已经初始化并分配内存了。

如果你这样声明var wg *sync.WaitGroup就还需要加一句wg = &sync.WaitGroup{}

回复了 helloworld 创建的主题: go怎样处理父子关系类型数据 向各位大神求解 2016-11-21 13:37

用map[string]interface{}自己手动拼接json格式

回复了 aaa 创建的主题: reflect 效率很差吗, 用作MVC如何? 2016-11-02 10:23

看看https://github.com/Simbory/wemvc 里面就是用了反射,性能还不错

回复了 joeonly 创建的主题: 工厂方法该返回指针还是普通值,看了下面你可能就有自己的主意了 2016-11-02 10:07

一般都是定义一个book的接口Book,然后在NewBook这个函数返回类型是这个接口,而不是指针更不是struct。看下面一段代码:

package main

type Book interface {
    SetName(string) Book
    GetName() string
}

type book struct {
    name string
}

func (this *book) GetName() string {
    return this.name
}

func (this *book) SetName(name string) Book {
    this.name = name
    return this
}

func NewBook(name string) Book {
    return &book{name}
}

func main() {
    println(book{"apple"}.name)
    println(NewBook("apple").GetName())
    x := NewBook("apple")
    x.SetName("new apple")
    println(x.GetName())
    println(NewBook("apple").SetName("ibm").GetName())
}
回复了 dxhdxh2k 创建的主题: 推荐一个比gin更快的webframework---iris 2016-11-01 10:46
回复了 shuaixinga 创建的主题: 求推荐GO框架,不知道该研究哪个,最重要的是代码质量高,且碎片化轻量级. 2016-10-20 10:12

推荐 wemvc:
https://github.com/Simbory/wemvc
有帮助开发的工具wetool:

  1. 获取工具
    go get github.com/Simbory/wetool
  2. 创建项目文件夹
    user@local:~/gopath/src/projects$ mkdir sample
  3. cd 到项目文件夹
    user@local:~/gopath/src/projects$ cd sample
  4. 初始化项目
    user@local:~/gopath/src/projects/sample$ wetool init
  5. 创建项目新的namespace
    user@local:~/gopath/src/projects/sample$ wetool ns admin
  6. 启用namespace: 在~/gopath/src/projects/sample/main.go文件中引入
    import _ “projects/sample/admin”
  7. 创建新的controller
    user@local:~/gopath/src/projects/sample$ wetool ctrl news
  8. 添加route规则:在~/gopath/src/projects/sample/controllers/init.go文件中添加路由
    wemvc.Route(“/news/<action=index>/<id=>“, NewsController{})
  9. 运行项目
    user@local:~/gopath/src/projects/sample$ go run main.go
Simbory 创建的更多回复