Go语言学习函数+结构体+方法+接口

Go语言学习函数+结构体+方法+接口

函数

函数是Go语言中的一等公民,可以像普通变量一样被传递、赋值和使用。函数的定义方式如下:

func 函数名(参数列表) (返回值列表) {
    //函数体
}

其中,参数列表和返回值列表可以为空。

示例代码:

package main

import "fmt"

func add(a, b int) int {
    return a + b
}

func main() {
    sum := add(1, 2)
    fmt.Println(sum)
}

结构体

Go语言中的结构体是一种用户自定义的数据类型,它可以包含多个属性(字段),可以被同一包内的其他函数和方法访问和修改。结构体的定义方式如下:

type 结构体名 struct {
    字段1 类型1
    字段2 类型2
    ...
}

示例代码:

package main

import "fmt"

type Student struct {
    name    string
    age     int
    address string
}

func main() {
    s := Student{
        name:    "Tom",
        age:     18,
        address: "Beijing",
    }
    fmt.Println(s)
}

方法

方法是结构体特有的函数,可以访问结构体的属性并对其进行操作。方法的定义方式如下:

func (接收器变量 接收器类型) 方法名(参数列表) (返回值列表) {
    //方法体
}

其中,接收器类型可以是结构体类型或者结构体指针类型,称为值接收器和指针接收器。

示例代码:

package main

import "fmt"

type Student struct {
    name    string
    age     int
    address string
}

func (s Student) getInfo() string {
    return fmt.Sprintf("Name: %s, Age: %d, Address: %s", s.name, s.age, s.address)
}

func main() {
    s := Student{
        name:    "Tom",
        age:     18,
        address: "Beijing",
    }
    fmt.Println(s.getInfo())
}

接口

接口是一种约定,规定了一组方法的名称、参数列表和返回值列表,并且不指定方法的实现。任何实现了接口的类型都可以称之为该接口类型的变量。接口的定义方式如下:

type 接口名 interface {
    方法1(参数列表) (返回值列表)
    方法2(参数列表) (返回值列表)
    ...
}

示例代码:

package main

import "fmt"

type Math interface {
    Add(int, int) int
    Sub(int, int) int
}

type MathImpl struct {
}

func (m MathImpl) Add(a, b int) int {
    return a + b
}

func (m MathImpl) Sub(a, b int) int {
    return a - b
}

func main() {
    var math Math
    math = MathImpl{}
    fmt.Println(math.Add(1, 2))
    fmt.Println(math.Sub(3, 2))
}

示例说明

以上示例代码分别演示了函数、结构体、方法和接口的使用方法。

函数示例中,定义了一个添加函数,传入两个整数参数并返回它们的和。

结构体示例中,定义了一个学生结构体,包含姓名、年龄和地址三个属性,并在主函数中对其进行实例化并输出。

方法示例中,给学生结构体添加了方法getInfo(),返回格式化后的信息字符串,包含姓名、年龄和地址三个属性的值,并在主函数中输出。

接口示例中,定义了一个数学接口,包含加法和减法两个方法,并以数学实现为例,演示了如何实现一个接口,并使用该接口的变量调用对应的方法。

通过以上示例代码,可以完整学习Go语言中的函数、结构体、方法和接口,为之后的Go语言开发打下坚实的基础。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Go语言学习函数+结构体+方法+接口 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • 基于jquery的简单富文本编辑器

    基于jQuery的简单富文本编辑器 随着Web应用程序的发展,越来越多的用户希望能够在网页中直接进行富文本编辑。市面上有许多优秀的开源富文本编辑器,其中使用最广泛的是基于JavaScript的开源富文本编辑器。在这里,我们将介绍一个基于jQuery的简单富文本编辑器。 使用jQuery构建富文本编辑器 jQuery是一个功能强大、使用方便、兼容性良好的Jav…

    其他 2023年3月28日
    00
  • Java getResource()如何获取class文件目录位置

    Java中的getResource()方法用于从类路径中获取资源,获取资源的路径可以是绝对路径,也可以是相对路径。方法的返回值是一个URL对象。 下面我们来讲解如何使用getResource()方法获取class文件目录位置: 获取class文件所在目录绝对路径 获取class文件所在目录的绝对路径可以使用以下代码: URL url = xxx.class.…

    other 2023年6月27日
    00
  • 微信小程序在哪里打开

    微信小程序是一种基于微信平台的应用程序,可以在微信中直接使用,而不需要下载或安装。在微信中,我们可以通过多种方式打开小程序,包括扫描小程序码、搜索、推荐等方式。 以下是详细的微信小程序在哪里打开的攻略: 1. 扫描小程序码 在微信中,我们可以通过扫描小程序码来打开小程序。小程序码可以显示在小程序的进入页面、宣传海报、商品详情页等位置。 具体操作流程如下: 打…

    其他 2023年4月16日
    00
  • 关于jdk环境变量配置以及javac不是内部或外部命令的解决

    关于JDK环境变量配置以及javac不是内部或外部命令的解决有以下攻略: 配置JAVA_HOME环境变量 前往Oracle官网下载对应版本的JDK,例如jdk-11.0.4_windows-x64_bin.exe 打开安装文件,按照提示进行安装,注意安装路径,以jdk-11.0.4为例,默认路径为C:\Program Files\Java\jdk-11.0.…

    other 2023年6月27日
    00
  • 怎么解决压缩文件不能打开显示无法找到应用程序的问题

    当我们下载或接收到一个压缩文件时,有时候在尝试打开压缩文件时会出现提示“无法打开”、“找不到应用程序”等错误。下面,我们提供一些解决压缩文件无法打开的方法。 方法一:尝试更换压缩软件 在某些情况下,某些软件可能无法打开特定类型的压缩文件,这可能会导致一些问题。因此,我们可以尝试更换压缩软件,例如WinZip、7-Zip等等,来查看能否成功打开而不再提示找不到…

    other 2023年6月25日
    00
  • Idea安装bpmn插件actiBPM的详细过程(解决高版本无法安装actiBPM插件)

    安装actiBPM插件的详细过程 以下是在Idea中安装actiBPM插件的详细步骤: 打开Idea并进入插件市场:在Idea的主界面中,点击顶部菜单栏的“File”(文件)选项,然后选择“Settings”(设置)。 进入插件市场:在设置界面中,选择左侧菜单栏的“Plugins”(插件)选项。 搜索actiBPM插件:在插件界面的搜索框中输入“actiBP…

    other 2023年8月3日
    00
  • Redis键值设计的实践

    Redis是一款高性能、可扩展、支持多种数据结构的NoSQL数据库。在使用Redis的过程中,如何设计键值对的结构是非常重要的,这会直接影响到Redis的性能和数据结构的效率。以下是Redis键值设计的实践完整攻略。 1. 命名规范 对于键值的命名,需要遵守一定的规范。建议使用有意义的名称,要让键名清晰明了,能反映出其作用。常见的命名规范包括使用缩写、驼峰式…

    other 2023年6月25日
    00
  • Java基于链表实现栈的方法详解

    Java基于链表实现栈的方法详解 一、链表 链表是一种常见的数据结构,可以通过指针将一组不连续的内存块连接起来,形成一个链式结构。链表中的每个节点包含两部分信息,一个是数据域用于存储数据,一个是指针域用于指向下一个节点的地址。通过头节点可以找到链表的第一个节点,通过节点的指针可以找到链表的其他节点。 二、栈 栈是一种常见的数据结构,具有先进后出的特点,即后进…

    other 2023年6月27日
    00
合作推广
合作推广
分享本页
返回顶部