如何使用此功能

type TestContent struct {

  x string

}


//CalculateHash hashes the values of a TestContent

func (t TestContent) CalculateHash() ([]byte, error) {

  h := sha256.New()

  if _, err := h.Write([]byte(t.x)); err != nil {

    return nil, err

  }


  return h.Sum(nil), nil

}

在声明的函数CalculateHash()中,为什么要t TestContent在函数名之前写一个数据类型?返回类型不应该写在函数名之后吗?


暮色呼如
浏览 139回答 2
2回答

MMMHUHU

(t TestContent)不是返回类型。(t TestContent)表示这CalculateHash是TestContent结构体的一个方法。这个函数的返回类型是([]byte, error)。它用于 的实例TestContent,即:  var t TestContent  bytes, err := t.CalculateHash()

慕工程0101907

实际上,它是一个方法声明。来自文档:方法是带有接收器的函数。方法声明将标识符(方法名称)绑定到方法,并将方法与接收者的基类型相关联。MethodDecl = "func" [Receiver][1] MethodName Signature [ FunctionBody ] .Receiver   = Parameters .然而:Go 没有课程。但是,您可以在类型上定义方法。方法是具有特殊接收器参数的函数。接收者出现在 func 关键字和方法名称之间的自己的参数列表中。因此,在您的示例中,(t TestContent)是方法声明的接收者。以下 python 片段大致是 Golang 版本:#!/usr/bin/env python3class TestContent:    def __init__(self):        self.x: str = ""def CalculateHash():    passtestContent = TestContent()testContent.CalculateHash = CalculateHash
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go