1. 首页
  2. 主题
  3. Go问与答

GO中的init函数与this的疑问

yz23je · · 1629 次点击
**问题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
更多评论
不好意思了,表达的有点不到位 。好的,我看一下
#2
func init() 不是其他语言的类的构造函数,而是package的初始化,所有不会有this指针; 一般是用上面说的NewXXX来做构造函数做的事情,在里面就是可以用new出来的实例调用add方法
#3

用户登录

没有账号?注册

今日阅读排行

    加载中

一周阅读排行

    加载中