Golang函数声明代码审查请求

Golang函数声明代码审查请求 从Python转向Golang需要一些时间来适应,我正寻求帮助来审查我的Go代码。 我正在尝试将一个Python代码转换为Golang。我已经用Golang重写了代码。附上的是代码截图。请审查我的代码并告知其中的错误。谢谢。

image

Python代码结构

class CallmainFunc(obj):

def init(self, **kwargs):
self.variable = None

def funcT1(self, f1, f2):
return f2

def funcT2(self, p1): return None

def funcT3(self, t1=None):
return False

def funcT4(self, z1, z2):
z1 - The z1 instance for a car brand z2 - list of available cars models ‘’’ pass

class AA(obj): def …

等效的Go代码

//KWAG = simulation of python kwargs

type KWAG map[string]interface{}

type CallmainFunc struct {}  //tryin to simulate Class as type 
   struct CallmainFunc(obj) {
    	func init(self, args KWAG) {
           self.variable = nil                                                       
    	}
    
     func funcT1(self, f1 string, f2 string) string {                                                    
       	    return f2								      
	}	
								  
     func funcT2(self, p1 string) {								
            return nil    
	}                                                              
       
     func funcT3(self, t1 string) bool {                                                    
      	    return false
	}
 	                                                          
 //dont know how to re-write funcT4

更多关于Golang函数声明代码审查请求的实战教程也可以访问 https://www.itying.com/category-94-b0.html

3 回复

jennifer:

附上代码截图。

请以文本形式发布代码。不要以图片形式发布代码。

更多关于Golang函数声明代码审查请求的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


完全理解你在转向新语言时遇到的困难。有很多优秀的Go语言入门教程,强烈建议你理解基本概念并在 play.golang.org 上运行示例代码。这对我也有很大帮助。

从你的Go代码来看,有几个关键问题需要修正。Go语言没有类的概念,而是使用结构体和方法。以下是修正后的代码:

type CallmainFunc struct {
    variable interface{}
}

// 构造函数模式
func NewCallmainFunc(kwargs map[string]interface{}) *CallmainFunc {
    return &CallmainFunc{
        variable: nil,
    }
}

func (c *CallmainFunc) FuncT1(f1, f2 string) string {
    return f2
}

func (c *CallmainFunc) FuncT2(p1 string) error {
    return nil
}

func (c *CallmainFunc) FuncT3(t1 ...string) bool {
    return false
}

func (c *CallmainFunc) FuncT4(z1 interface{}, z2 []string) {
    // z1 - The z1 instance for a car brand
    // z2 - list of available cars models
}

主要修正点:

  1. 结构体字段声明需要在结构体内部
  2. Go使用接收者方法而不是self参数
  3. funcT2返回error类型更符合Go惯例
  4. funcT3使用可变参数模拟Python的默认参数
  5. funcT4根据文档字符串实现参数类型

使用方法:

func main() {
    kwargs := map[string]interface{}{"key": "value"}
    obj := NewCallmainFunc(kwargs)
    
    result := obj.FuncT1("input1", "input2")
    fmt.Println(result)
}
回到顶部