Указатели в параметрах интерфейсов и классов
Этот коммит содержится в:
родитель
94ea4afaf4
коммит
d340d11c77
3 изменённых файлов: 22 добавлений и 6 удалений
|
@ -63,11 +63,15 @@ func handleAbstractFuncDeclParams(t *ast.FuncType) (code string) {
|
||||||
}
|
}
|
||||||
values := make([]string, 0)
|
values := make([]string, 0)
|
||||||
for _, field := range t.Params.List {
|
for _, field := range t.Params.List {
|
||||||
|
t := ""
|
||||||
switch ft := field.Type.(type) {
|
switch ft := field.Type.(type) {
|
||||||
case *ast.Ident:
|
case *ast.Ident:
|
||||||
t := handleIdentExpr(ft)
|
t = handleIdentExpr(ft)
|
||||||
values = append(values, t)
|
case *ast.StarExpr:
|
||||||
|
t = handleStarExpr(ft)
|
||||||
|
t += "*"
|
||||||
}
|
}
|
||||||
|
values = append(values, t)
|
||||||
}
|
}
|
||||||
code += strings.Join(values, ",")
|
code += strings.Join(values, ",")
|
||||||
return
|
return
|
||||||
|
|
|
@ -35,6 +35,7 @@ package test
|
||||||
type Device interface {
|
type Device interface {
|
||||||
Name() string
|
Name() string
|
||||||
String() string
|
String() string
|
||||||
|
Some(*Thing) string
|
||||||
Add(int)
|
Add(int)
|
||||||
Add2(int,float64)
|
Add2(int,float64)
|
||||||
}
|
}
|
||||||
|
@ -45,6 +46,7 @@ class Device {
|
||||||
public:
|
public:
|
||||||
virtual std::string Name() = 0;
|
virtual std::string Name() = 0;
|
||||||
virtual std::string String() = 0;
|
virtual std::string String() = 0;
|
||||||
|
virtual std::string Some(Thing*) = 0;
|
||||||
virtual void Add(int) = 0;
|
virtual void Add(int) = 0;
|
||||||
virtual void Add2(int,double) = 0;
|
virtual void Add2(int,double) = 0;
|
||||||
};
|
};
|
||||||
|
@ -145,7 +147,7 @@ type device struct {
|
||||||
a int
|
a int
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *device) doSomething() {
|
func (d *device) doSomething(a *int) {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
* Результат:
|
* Результат:
|
||||||
|
@ -153,9 +155,9 @@ func (d *device) doSomething() {
|
||||||
class device {
|
class device {
|
||||||
public:
|
public:
|
||||||
int a;
|
int a;
|
||||||
void doSomething();
|
void doSomething(int* a);
|
||||||
};
|
};
|
||||||
void device::doSomething() {
|
void device::doSomething(int* a) {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -132,12 +132,22 @@ func handleFuncDeclParams(t *ast.FuncType) string {
|
||||||
values := make([]string, 0)
|
values := make([]string, 0)
|
||||||
for _, field := range t.Params.List {
|
for _, field := range t.Params.List {
|
||||||
ftype := ""
|
ftype := ""
|
||||||
|
star := false
|
||||||
switch ft := field.Type.(type) {
|
switch ft := field.Type.(type) {
|
||||||
case *ast.Ident:
|
case *ast.Ident:
|
||||||
ftype = handleIdentExpr(ft)
|
ftype = handleIdentExpr(ft)
|
||||||
|
case *ast.StarExpr:
|
||||||
|
ftype = handleStarExpr(ft)
|
||||||
|
star = true
|
||||||
}
|
}
|
||||||
for _, names := range field.Names {
|
for _, names := range field.Names {
|
||||||
values = append(values, ftype+" "+names.Name)
|
n := ftype
|
||||||
|
if star {
|
||||||
|
n += "*"
|
||||||
|
}
|
||||||
|
n += " "
|
||||||
|
n += names.Name
|
||||||
|
values = append(values, n)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
code += strings.Join(values, ",")
|
code += strings.Join(values, ",")
|
||||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче