【Go】Go语言基础内容

变量声明:

  1. 变量声明:在Go中,变量必须先声明然后再使用。声明变量使用 var 关键字,后面跟着变量名和类型,如下所示:

    var age int
    

    这行代码声明了一个名为 age 的整数变量。

  2. 变量初始化:您可以在声明时为变量分配初始值,也可以省略类型,让Go自动推断类型:

    var name string = "John"
    var age = 30 // 类型自动推断为int
    
  3. 短变量声明:对于局部变量,可以使用 := 运算符来进行短变量声明。这种方式不需要显式指定类型:

    name := "John"
    

    Go会自动推断 name 的类型为字符串。

  4. 常量声明:常量使用 const 关键字来声明,一旦声明,它们的值不能更改:

    const pi = 3.14
    

    常量的值在编译时确定,并且必须是常量表达式。

条件和循环:

  1. if语句:Go中的 if 语句用于执行条件语句。它可以与一个可选的 else 语句一起使用:

    if age >= 18 {fmt.Println("You are an adult")
    } else {fmt.Println("You are not an adult")
    }
    
  2. switch语句:Go的 switch 语句非常灵活,可以用于多个条件,而且不需要使用 break 关键字:

    switch day {
    case "Monday":fmt.Println("It's Monday!")
    case "Tuesday":fmt.Println("It's Tuesday!")
    default:fmt.Println("It's another day of the week")
    }
    
  3. for循环:Go的 for 循环有三种基本用法:

    • 基本的 for 循环:

      for i := 0; i < 5; i++ {fmt.Println(i)
      }
      
    • for 循环作为 while 使用:

      sum := 0
      for sum < 10 {sum += 1
      }
      
    • for 循环迭代集合(如切片或映射):

      numbers := []int{1, 2, 3, 4, 5}
      for index, value := range numbers {fmt.Printf("Index: %d, Value: %d\n", index, value)
      }
      
  4. break和continue:在循环中,您可以使用 break 关键字来立即退出循环,而 continue 关键字用于跳到下一次循环迭代。

当涉及到Go语言的函数、结构体和接口时,以下是详细的解释:

函数:

在Go语言中,函数是一段可重用的代码块,用于执行特定任务或操作。函数有以下特性:

  • 定义函数: 使用 func 关键字来定义函数。函数包含函数名、参数列表和返回值列表。

    func add(a, b int) int {return a + b
    }
    
  • 参数和返回值: 函数可以接受参数,并且可以有一个或多个返回值。在上面的示例中,add 函数接受两个整数参数,并返回一个整数。

  • 函数调用: 要调用函数,只需使用函数名和所需的参数列表。

    result := add(5, 3)
    
  • 多返回值: Go支持多返回值的函数,这意味着一个函数可以返回多个值。

    func divide(a, b int) (int, error) {if b == 0 {return 0, errors.New("division by zero")}return a / b, nil
    }
    
  • 匿名函数: 在Go中,您还可以创建匿名函数,这是没有函数名的函数,通常用于在函数内部定义和使用。

    func main() {add := func(a, b int) int {return a + b}result := add(2, 3)fmt.Println(result)
    }
    

结构体:

Go语言中的结构体是一种用户自定义的复合数据类型,用于组合多个字段来表示一个数据结构。结构体有以下特性:

  • 定义结构体: 使用 type 关键字来定义结构体。结构体的字段通常使用大写字母开头,表示它们是导出的(可以在其他包中访问)。

    type Person struct {FirstName stringLastName  stringAge       int
    }
    
  • 创建结构体实例: 使用结构体类型创建实例,然后初始化字段。

    person := Person{FirstName: "John",LastName:  "Doe",Age:       30,
    }
    
  • 访问结构体字段: 使用.运算符来访问结构体字段的值。

    fmt.Println(person.FirstName) // 输出 "John"
    
  • 匿名结构体: 您还可以创建匿名结构体,用于临时存储数据。

    person := struct {FirstName stringLastName  string
    }{FirstName: "John",LastName:  "Doe",
    }
    
  • 嵌套结构体: 结构体可以嵌套在其他结构体内,以构建更复杂的数据结构。

接口:

接口是Go语言中的一种抽象类型,它定义了一组方法的签名,但没有具体的实现。接口有以下特性:

  • 定义接口: 使用 type 关键字定义接口。

    type Writer interface {Write([]byte) (int, error)
    }
    
  • 实现接口: 任何类型只要实现了接口中定义的所有方法,都被认为是实现了该接口。Go使用隐式接口实现。

  • 接口类型变量: 可以创建接口类型的变量,并将任何实现了该接口的值分配给这些变量。

    var w Writer
    w = os.Stdout
    
  • 多接口实现: 一个类型可以同时实现多个接口。

  • 空接口: 空接口 interface{} 不包含任何方法,因此可以表示任何类型的值。

    var emptyInterface interface{}
    emptyInterface = 42
    emptyInterface = "Hello"
    
  • 类型断言: 使用类型断言来检查接口类型变量的底层类型和获取其值。

    value, ok := emptyInterface.(int)
    if ok {fmt.Println("It's an integer:", value)
    }
    

本期好书推荐《精通Go语言》


下单链接:https://item.jd.com/13543938.html

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/259285.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【爬取二手车并将数据保存在数据库中】

爬取二手车并将数据保存在数据库中 查看网页结构分析爬取步骤解密加密信息将密文解密代码&#xff1a; 进行爬取&#xff1a;爬取函数写入解密文件函数和获取城市函数解密文件&#xff0c;返回正确字符串函数保存到数据库 运行结果 查看网页结构分析爬取步骤 可以看出网页使用…

阿里云磁盘在线扩容

我们从阿里云的控制面板中给硬盘扩容后结果发现我们的磁盘空间并没有改变 注意&#xff1a;本次操作是针对CentOS 7的 &#xfeff;#使用df -h并没有发现我们的磁盘空间增加 #使用fdisk -l发现确实还有部分空间 运行df -h命令查看云盘分区大小。 以下示例返回分区&#xf…

一对多聊天室

多人聊天包 由于要先创建服务面板&#xff0c;接收客户端连接的信息&#xff0c;此代码使用顺序为先启动服务端&#xff0c;在启动客户端&#xff0c;服务端不用关&#xff0c;不然会报错。多运行几次客户端&#xff0c;实现单人聊天 创建服务面板 package yiduiduo;import j…

03DockerFile

03DockerFile 1.DockerFile的概念 用来构建docker​镜像的构建文件,由一系列参数和命令构成的脚本 大体总览: ​​ ‍ 1.构建过程 要遵循的规则: ​​ 2.执行流程 ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍

Python Authlib库:构建安全可靠的身份验证系统

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 在现代应用程序中&#xff0c;安全性是至关重要的&#xff0c;特别是在处理用户身份验证时。Authlib库为Python开发者提供了一套强大的工具&#xff0c;用于简化和增强身份验证和授权流程。本文将深入探讨Authli…

HarmonyOS应用开发工具DevEco Studio安装与使用

语雀知识库地址&#xff1a;语雀HarmonyOS知识库 飞书知识库地址&#xff1a;飞书HarmonyOS知识库 知识库内容逐步完善中… 工欲善其事必先利其器&#xff0c;要编写HarmonyOS应用就需要用到官方提供的IDE工具来编写相应的代码。 在鸿蒙开发者官网&#xff0c;其提供了官方的开…

【Java用法】Hutool树结构工具-TreeUtil快速构建树形结构的两种方式 + 数据排序

Hutool树结构工具-TreeUtil快速构建树形结构的两种方式 数据排序 一、业务场景二、Hutool官网树结构工具2.1 介绍2.2 使用2.2.1 定义结构2.2.2 构建Tree2.2.3 自定义字段名 2.3 说明 三、具体的使用场景3.1 实现的效果3.2 业务代码3.3 实现自定义字段的排序 四、踩过的坑4.1 坑…

chfs,简单好用的局域网共享网盘

1. 网盘简介 2. 下载安装包 点击地址下载 3. 部署网盘 &#xff08;1&#xff09;创建文件夹 mkdir -p /opt/chfs/share /opt/chfs/logs share 共享文件夹&#xff0c;也就是存放文件的地方 logs 存放日志文件&#xff08;2&#xff09;上传压缩包到 /opt/chfs目录下…

Doris 编译报错 Error: flex version (2.5.37) must be greater than or equal to 2.6.0

Doris 编译过程报错 Error: flex version (2.5.37) must be greater than or equal to 2.6.0yum update flex 不生效 下载flex 安装包 https://github.com/westes/flex/releases解压 tar -xvf flex-2.6.4.tar

复杂gRPC之go调用go

1. 复杂的gRPC调用 我们使用了一个较为复杂的proto文件&#xff0c;这个文件的功能主要是用来定位的&#xff0c;详细内容可以看代码中的注解 syntax "proto3"; //指定生成的所属的package&#xff0c;方便调用 option go_package "./"; package route…

拼多多选品大作战:通过热词选利润赛道

相信很多人都听过一句话&#xff1a;找对了风口&#xff0c;猪都能飞起来。 我们电商人也应如此&#xff0c;从行业分析到选品都应快速跟上市场节奏。 今天就给大家分享一下如何通过热词来进行一个行业类目的分析与选择。 01 热词是什么 热词通常指的是热搜词和飙升词&#…

RFID在新能源工厂大放异彩

RFID在新能源工厂大放异彩 我国在十四五规划中提出了建设绿色低碳发展的目标&#xff0c;新能源产业成为了国家发展的重点领域之一&#xff0c;开始大力支持各种新能源厂商发展。各个厂商之间不仅比产品、比技术。也比生产想要降本增效&#xff0c;为了实现这一目标&#xff0…