Go语言学习笔记:基础语法和类型

Go语言学习笔记:基础语法和类型

目录

  • Go语言学习笔记:基础语法和类型
    • 学习路线
    • 前言
    • 变量声明
    • 常量
    • 数据类型
      • 布尔型(Boolean)
      • 整型(Integer)
      • 浮点型(Floating point)
      • 复数型(Complex numbers)
      • 字符串(String)
    • 类型转换
    • 控制结构
      • if、else
      • for
      • switch
    • 数组
    • 切片
    • 映射
    • 结构体
    • 指针
    • 函数

学习路线

在这里插入图片描述

前言

Go语言是一种静态类型、编译型语言,它的语法受到了C语言的影响,但在简化代码书写和增强代码安全性方面做了很多改进。下面是Go语言基础语法和类型的详细学习指南。

变量声明

Go语言中你可以使用var关键字来声明变量,并可选择立即初始化变量。

var a int = 1
var b = 2 // 类型推断
c := 3 // 简短声明,只能在函数内部使用

常量

常量使用const关键字声明,且必须在编译时确定值。

const Pi = 3.14159

数据类型

Go语言提供了一系列的基本数据类型:

  • 布尔型(Boolean): bool,它的值是true或false。
  • 整型(Integer): 包括int、int8、int16、int32、int64以及它们的无符号版本uint、uint8、uint16、uint32、uint64和uintptr。
  • 浮点型(Floating point): float32和float64。
  • 复数型(Complex numbers): complex64和complex128,它们分别对应float32和float64两种浮点数精度。
  • 字符串(String): string,表示UTF-8字符序列。

布尔型(Boolean)

var isTrue bool = true
var isFalse bool = false
fmt.Println(isTrue)  // 输出:true
fmt.Println(isFalse) // 输出:false

整型(Integer)

var intVal int = 10
var int8Val int8 = 127
var int16Val int16 = 32767
var int32Val int32 = 2147483647
var int64Val int64 = 9223372036854775807
var uintVal uint = 10 // 无符号整型
fmt.Println(intVal, int8Val, int16Val, int32Val, int64Val, uintVal)

浮点型(Floating point)

var float32Val float32 = 3.1415926535 // 单精度浮点数
var float64Val float64 = 3.141592653589793 // 双精度浮点数
fmt.Printf("%.2f\n", float32Val) // 输出:3.14
fmt.Printf("%.2f\n", float64Val) // 输出:3.14

复数型(Complex numbers)

var complex64Val complex64 = 1 + 2i
var complex128Val complex128 = 1 + 2i
fmt.Println(complex64Val)  // 输出:(1+2i)
fmt.Println(complex128Val) // 输出:(1+2i)

字符串(String)

var str string = "Hello, World!"
fmt.Println(str) // 输出:Hello, World!

在Go语言中,字符串是不可变的,字符序列使用UTF-8编码表示。字符串可以包含任意的数据,包括byte值0,但是通常用来包含人类可读的文本。文本字符串通常被解释为采用UTF-8编码的Unicode码点(rune)序列。

类型转换

Go要求显式类型转换,语法为Type(v),将值v转换为Type类型。

i := 42
f := float64(i)
u := uint(f)

控制结构

Go语言中的控制结构包括if、else、for和switch

if、else

if i%2 == 0 {fmt.Println(i, "is even")
} else {fmt.Println(i, "is odd")
}

for

for i := 0; i < 10; i++ {fmt.Println(i)
}

switch

switch os := runtime.GOOS; os {
case "darwin":fmt.Println("OS X.")
default:fmt.Println("%s.", os)
}

数组

数组是具有固定大小且类型相同的元素序列。

var a [5]int // 声明一个包含5个整数的数组

切片

切片是对数组的抽象,它提供了更加灵活的、动态大小的视图。

s := make([]int, 0, 10) // 创建一个初始长度为0、容量为10的切片
s = append(s, 2)         // 向切片追加元素

映射

映射是键值对的无序集合。

m := make(map[string]int) // 创建一个空映射
m["key"] = 42            // 设置键值对

结构体

结构体是一种聚合数据类型,它用于将不同类型的数据组合在一起。

type Vertex struct {X, Y int
}var v = Vertex{1, 2} // 创建一个Vertex类型的结构体变量

指针

指针保存了值的内存地址。

var p *int
i := 42
p = &i // p指向i
*p = 21 // 通过指针p设置i的值

函数

函数可以有多个返回值,并支持命名返回值。

func swap(x, y string) (string, string) {return y, x
}

这些是Go语言的基础部分,学习时可以通过编写简单的程序来实践这些概念。Go的标准库中还有大量的包提供了额外的功能,比如文件操作、网络通信等等。随着对这些基础知识的熟练掌握,你可以开始探索这些高级话题,进一步提高你的Go编程能力。

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

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

相关文章

LeetCode.2765. 最长交替子数组

题目 2765. 最长交替子数组 分析 为了得到数组 nums 中的最长交替子数组的长度&#xff0c;需要分别计算以每个下标结尾的最长交替子数组的长度。为了方便处理&#xff0c;计算过程中需要考虑长度等于 1 的最长交替子数组&#xff0c;再返回结果时判断最长交替子数组的长度…

【代码整理】COCO格式数据集画框

可以用于排查数据集转化后可能出现的坐标错误&#xff0c;类别不对齐等需要可视化才能发现的问题 import部分 from pycocotools.coco import COCO import numpy as np import os from PIL import Image from matplotlib.collections import PatchCollection from matplotlib.…

详细分析Java中的Date类以及格式转换

目录 前言1. 基本知识2. 格式化输出3. 格式转换 前言 记录这篇文章的缘由&#xff0c;主要是涉及一个格式转换&#xff0c;对此深挖了这个类 在Java中&#xff0c;Date类是用于表示日期和时间的类。 位于java.util包中&#xff0c;是Java平台中处理日期和时间的基本类之一。…

路由器结构

路由器是连接互联网的设备&#xff0c;本文主要描述路由器的结构组成。 如上所示&#xff0c;OSI&#xff08;Open System Interconnect&#xff09;开放系统互联参考模型是互联网架构的标准协议栈&#xff0c;由ISO标准组织制定。自底向上&#xff0c;互联网架构分为7层&#…

服务器与Ajax

1.初识Ajax Asynchronous JavaScript and XML&#xff08;异步的 JavaScript 和 XML&#xff09;。 术语ajax最早产生于2005年&#xff0c;Ajax表示Asynchronous JavaScript and XML(异步JavaScript和XML)&#xff0c;但是它不是像HTML、JavaScript或CSS这样的一种“正式的”技…

Docker镜像操作

镜像名称 镜名称一般分两部分组成&#xff1a;[repository]:[tag]。 在没有指定tag时&#xff0c;默认是latest&#xff0c;代表最新版本的镜像。 这里的mysql就是repository&#xff0c;5.7就是tag&#xff0c;合一起就是镜像名称&#xff0c;代表5.7版本的MySQL镜像。 镜像…

YOLOv8改进 | 损失函数篇 | QualityFocalLoss质量焦点损失(含代码 + 详细修改教程)

一、本文介绍 本文给大家带来的改进机制是QualityFocalLoss,其是一种CLS分类损失函数,它的主要创新是将目标的定位质量(如边界框与真实对象的重叠度量,例如IoU得分)直接融合到分类损失中,形成一个联合表示。这种方法能够解决传统目标检测中分类与定位任务之间存在的不一…

Sentinel限流规则支持流控效果

流控效果是指请求达到流控阈值时应该采取的措施&#xff0c;包括三种&#xff1a; 1.快速失败&#xff1a;达到阈值后&#xff0c;新的请求会被立即拒绝并抛出FlowException异常。是默认的处理方式。 2.warm up&#xff1a;预热模式&#xff0c;对超出阈值的请求同样是拒绝并抛…

风二西CTF流量题大集合-刷题笔记|NSSCTF流量题(1)

2.[鹤城杯 2021]流量分析 flag{w1reshARK_ez_1sntit} 3.[CISCN 2023 初赛]被加密的生产流量 c1f_fi1g_1000 4.[GKCTF 2021]签到 flag{Welc0me_GkC4F_m1siCCCCCC!} 5.[闽盾杯 2021]Modbus的秘密 flag{HeiDun_2021_JingSai} 6.[LitCTF 2023]easy_shark 7.[CISCN 2022 初赛]ez…

opencv#29 图像噪声的产生

在上一节的图像卷积我们了解到图像卷积可以用于去除图像中的噪声&#xff0c;那么对于现实生活中每一张采集到的图像都会包含噪声&#xff0c;也就是我们通过相机无法得到不包含噪声的图像&#xff0c;如果我想衡量噪声去除能力的强弱&#xff0c;就必须在一张不含噪声的图像中…

瑞_力扣LeetCode_104. 二叉树的最大深度

文章目录 题目 104. 二叉树的最大深度题解后序遍历 递归实现后序遍历 迭代实现层序遍历 &#x1f64a; 前言&#xff1a;本文章为瑞_系列专栏之《刷题》的力扣LeetCode系列&#xff0c;主要以力扣LeetCode网的题进行解析与分享。本文仅供大家交流、学习及研究使用&#xff0c;禁…

Armv8-M的TrustZone技术之内存属性单元

如果处理器包含Armv8-M安全扩展&#xff0c;则内存区域的安全状态由内部安全属性单元&#xff08;SAU&#xff0c;Secure Attribution Unit&#xff09;或外部实现定义的属性单元&#xff08;IDAU&#xff0c;Implementation Defined Attribution Unit&#xff09;的组合控制。…

机器学习实验报告——APRIORI算法

目录 一、算法介绍 1.1算法背景 1.2算法引入 1.3算法假设 1.4算法基本概念介绍 1.4.1关联规则 1.4.2支持度 1.4.3置信度 1.4.4频繁项集 1.4.5项目 1.4.6提升度 二、算法原理 2.1算法思想 2.2Apriori算法产生频繁项集 2.3Apriori算法的基本步骤 2.4关联分析 三、算法实现 3.1 Ap…

深度学习(5)---自注意力机制

文章目录 1. 输入与输出2. Self-attention2.1 介绍2.2 运作过程2.3 矩阵相乘理解运作过程 3. 位置编码4. Truncated Self-attention4.1 概述4.2 和CNN对比4.3 和RNN对比 1. 输入与输出 1. 一般情况下在简单模型中我们输入一个向量&#xff0c;输出结果可能是一个数值或者一个类…

【一站解决您的问题】mac 利用命令升级nodejs、npm、安装Nodejs的多版本管理器n、nodejs下载地址

一&#xff1a;下载nodejs 官网地址&#xff0c;点击下载稳定版 https://nodejs.org/en 如果官网下载特别慢&#xff0c;可以点击这个地址下载 点击这里 https://nodejs.cn/download/current/ 安装完成后&#xff0c;就包含了nodejs 和 npm。此时您的版本就是下载安装的版本…

数字频率合成器dds的量化性能分析matlab仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 DDS的基本原理 4.2 DDS的量化性能分析 5.完整工程文件 1.课题概述 数字频率合成器dds的量化性能分析matlab仿真&#xff0c;分别定义累加器位宽&#xff0c;截位位宽&#xff0c;模拟DAC位宽等&…

制冷系统吸排气管路的设计

吸气管路的设计 由于流动产生的阻力损失,导致压缩机吸气口处的压力低于蒸发器出口处的压力。当吸气压力降低时&#xff0c;回气比容增大&#xff0c;压缩机的排气量减少&#xff0c;机组制冷量将会有损失。同时吸气管中还要维持足够高的制冷剂流速以使冷冻油能顺利返回压缩机。…

走出大模型部署新手村!小明这样用魔搭×函数计算

作者&#xff1a;拓山 前文介绍了魔搭 ModelScope 社区模型服务 SwingDeploy 服务。开发者可以将模型从魔搭社区的模型库一键部署至阿里云函数计算&#xff0c;当选择模型并部署时&#xff0c;系统会选择对应的机器配置。按需使用可以在根据工作负载动态的减少资源&#xff0c…

如何在WordPress网站中添加多语言搜索(2种简单方法)

您想在WordPress网站中添加多语言搜索吗&#xff1f; 如果您有一个多语言 WordPress 网站&#xff0c;那么添加多语言搜索功能可以帮助用户通过使用自己的语言进行搜索来更快地找到信息。 在本文中&#xff0c;我们将向您展示如何在 WordPress 中轻松添加多语言搜索&#xff…

C#,入门教程(31)——预处理指令的基础知识与使用方法

上一篇&#xff1a; C#&#xff0c;入门教程(30)——扎好程序的笼子&#xff0c;错误处理 try catchhttps://blog.csdn.net/beijinghorn/article/details/124182386 Visual Studio、C#编译器以及C#语法所支持的预处理指令&#xff0c;绝对是天才设计。 编译程序的时候会发现&am…