**问题1**:其它语言都有class的概念,我知道go没有这个。
我想问一下,其它语言中可以在构造函数中使用this指针调用自己类中的函数
那么我在go的init中要调用结构中的函数怎么调用呢,定义一个结构体对象再调用吗?
如下:
```
// 定义结构体
type Class_Test struct{
.....
}
// 初始化函数
func init(){
// 这里不能像其它语言那样this->add()
// 那么在这个go的init函数中要怎么调用add这个函数呢?难道也在这里先new(Class_Test)再调用吗?
}
func (obj Class_test)add(){
......
}
```
**问题2**:在go语言中,比如我现在创建了2个go文件,test1.go和test2.go
这两个文件中定义有结构体和属于结构体的方法。
在main函数调用的时候,肯定是很new一个结构体。再通过结构体来调用里面的方法。但是我觉得这样不方便。因为你要调用相应的方法的时候,你得先new一个结构体出来。
反而觉得把如果结构体中的方法改成函数,那么就可以不用new结构体而是直接使用就可以了。
所以想问问大家,把结构体中的方法改成函数以方便调用。这种试在以前的维护中会有坑吗
看了半天,终于看懂你要干什么了
```
type XXX struct{
xxxx
}
var DefaultXXX=NewXXX()
fucc init(){
DefaultXXX.Add()
}
```
具体可以参考标准库 net/http的DefaultClient 部分
#1
更多评论
func init() 不是其他语言的类的构造函数,而是package的初始化,所有不会有this指针;
一般是用上面说的NewXXX来做构造函数做的事情,在里面就是可以用new出来的实例调用add方法
#3