go基础学习笔记

思维导图

在这里插入图片描述

变量

声明形式为var 变量名 变量类型
赋值形式为变量名=变量值
声明和赋值同时形式为变量名:=变量值
多个变量同时声明使用形式为

var (x intb bool
)

当有多个变量类型一样时,可以放在一行,形式为var x,y int,当类型一样,并且需要赋值同一行形式为a, b :=10, 20
特殊变量名_(下划线),当赋值给下划线时,会被丢弃_, b:=10,20

类型

int在32位硬件上是32位的,在64位硬件上是64位的
数字类型的有

  • int8, int16,int32,int64, rune(int32的别名)
  • byte, uint8, uint16, uint32, uint64
  • float32, float64

字符串在go中是不可修改的,如果需要修改,需要如下操作

var s string = "hello"
c := []rune(s)
c[0] = 'c'
s2 := string(c)

多行字符串支持形式有

  • 使用+换行,这个不包含换行符
  • 使用反引用``,包含换行符
s := "Starting part" +"Ending part"
s1 := `Starting partEnding part`

复数类型有complex126, complex64
错误类型为error

常量

其支持的类型有数字、布尔和字符串。多个常量同时声明使用形式与变量类似。在使用枚举时,可以使用iota,首次使用表示0,再次使用则+1,如

const (a = iotab
)

运算符

算术运算符有:*,/, %,<<, >>
位运算符有:&,&^, |, ^
关系运算符有:==, !=, <,<=, >, >=
逻辑运算符有:&&, ||, !
通道运算符:<-

控制结构

支持条件和循环
条件形式为if或者switch

if 条件 {} else {}
或者
switch {
case 条件
}

在switch不带表达式时,即为true,执行内部的case条件语句
在带有表达式时,会判断条件的真假,进入对应的case分支,匹配失败时不会向c语言样自动向下尝试,如果想要像c语言那样,则添加fallthrough
循环形式有

for init; condition; post {}
或者
for condition {}
或者
for {}

range可以用于循环,尤其是在数据类型为slice, array, string, map和channel

list := []string{"a", "b", "c", "d", "e", "f"}
for k, v := range list {fmt.Println(k, v)
}

array,slice和map

数组声明形式为var a [n]type,其中n表示数组元素个数,type表示数组元素类型。在联合声明时a:=[...]int{},n可以使用省略号,由go自动计算数组元素个数。数组是值类型
slice是引用类型,为指向array的指针

函数

形式为

func (p myType) funcname(q int)(r, s int) {
}

当没有返回值时,(r,s int)可以省略
当返回值只有一个时,可以只写类型
defer语句在函数退出时执行,比如资源回收
变参函数形式为

func funcname(arg ...int)

在函数体内,变参类型为slice,对于没有指定类型的变参,类型默认为interface

包中大写字母开头的是public的,小写字母开头的是private的
推荐使用go module来管理包

测试包

测试包为testing。在使用go test时,会遍历以_test.go结尾的go文件,同时执行以Test开头的测试函数

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

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

相关文章

C++析构函数和线程退出1

线程作为程序在操作系统中的执行单元&#xff0c;它是活动对象&#xff0c;有生命周期状态&#xff0c;它是有始有终的。有启动就有结束&#xff0c;在上篇文章中讨论了线程作为数据成员启动时的顺序问题&#xff0c;如何避免构造函数在初始化对象时对线程启动的负面影响&#…

【语法】JSON格式与基础语法

文章目录JSON 简介JSON 语法规则JSON 名称/值对JSON 值类型JSON文件存储JSON示例数据示例Python解析JSON代码JSON 简介 JSON 语法是 JavaScript 语法的子集。JSON 是存储和交换文本信息的语法。JSON: JavaScript Object Notation(JavaScript 对象表示法)。 JSON 语法规则 数…

GitHub 热榜项目 - 日榜(2025-08-16)

GitHub 热榜项目 - 日榜(2025-08-16) 生成于&#xff1a;2025-08-16 统计摘要 共发现热门项目&#xff1a;13 个 榜单类型&#xff1a;日榜 本期热点趋势总结 本期GitHub热榜呈现三大技术热点&#xff1a;1) AI应用深入垂直领域&#xff0c;SpatialLM将大语言模型应用于空间…

什么是EDA(Exploratory Data Analysis,探索性数据分析)

EDA&#xff08;Exploratory Data Analysis&#xff0c;探索性数据分析&#xff09;是一种在正式建模前&#xff0c;通过统计量和可视化方法来理解数据特征、发现模式与异常、并提出假设的过程。 这张图里你会看到&#xff1a; 直方图&#xff1a;展示单变量的分布&#xff0c;…

计算机毕业设计java的小天鹅酒店月子会所管理小天鹅酒店母婴护理中心管理系统设计小天鹅酒店产后护理会所信息化管理平台

计算机毕业设计java的小天鹅酒店月子会所管理9zl079&#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。在当今数字化时代&#xff0c;随着人们对产后护理需求的不断增加&#xff0c;…

Docker-14.项目部署-DockerCompose

一.DockerCompose大家可以看到&#xff0c;我们部署一个简单的java项目&#xff0c;其中包含3个容器&#xff1a;MySQLNginxJava项目而稍微复杂的项目&#xff0c;其中还会有各种各样的其它中间件&#xff0c;需要部署的东西远不止3个。如果还像之前那样手动的逐一部署&#xf…

Vue组件基础解析

一、组件的核心意义 组件是Vue中实现UI复用与逻辑封装的基础单元,能将复杂UI拆分为独立、可重用的部分,最终组织成嵌套的树状结构(类似HTML元素嵌套)。Vue组件模型支持自定义内容与逻辑封装,也能兼容原生Web Component。 二、组件的定义方式 根据是否使用构建步骤,Vue…

第5问 对于数据分析领域,统计学要学到什么程度?

1. ​统计学在数据分析中的定位​​核心作用​&#xff1a;统计学是数据分析的底层方法论&#xff0c;涵盖数据描述、推断预测和模型构建。​两大分支​&#xff1a;​描述统计​&#xff08;EDA阶段&#xff09;&#xff1a;数据清洗、特征工程的基础&#xff08;如均值/分布/…

[go] 桥接模式

桥接模式 是一种结构型设计模式&#xff0c; 可将一个大类或一系列紧密相关的类拆分为抽象和实现两个独立的层次结构&#xff0c; 从而能在开发时分别使用。 模型说明抽象部分&#xff08;Abstraction&#xff09;提供高层控制逻辑&#xff0c;依赖于完成底层实际工作的实现对象…

GitHub的使用教程

第一章&#xff1a;准备工作 1.1&#xff1a;安装Git并设置你的GitHub账户 1.1.1&#xff1a;注册 GitHub 账号&#xff1a; 访问 https://github.com/ 并注册一个新账号。 可以使用qq邮箱进行注册 输入邮箱后点击sign up for GitHub,设置密码后进行注册&#xff0c;输入验…

Day56 Java面向对象10 方法重写

Day56 Java面向对象10 方法重写 1.为什么要方法重写 当子类不需要父类方法的全部内容 或 父类的方法无法满足子类的需求时,就需要在子类重写父类的方法 2.如何方法重写 重写必须发生在继承关系中,只能是子类重写父类子类重写的方法名必须和父类方法一致,方法体可以不同子类重写…

【C++】标准库中用于组合多个值的数据结构pair、tuple、array...

在 C 标准库中&#xff0c;有多种数据结构可用于组合多个值&#xff0c;每种结构都有其特定的设计目的和适用场景。以下是主要组合数据结构的分类解析&#xff1a; 一、核心组合数据结构 1. std::pair (C98) 用途&#xff1a;存储两个相关值&#xff08;键值对、坐标点等&#…

深入解析C++ STL链表(List)模拟实现

目录 一、需要实现的三个类及其成员函数接口 二、结点类的模拟实现 构造函数 三、迭代器类的模拟实现 1、迭代器类的作用 2、迭代器类模板参数说明 3、构造函数 4、前置运算符重载 5、后置运算符重载 6、前置 -- 运算符重载 7、后置 -- 运算符重载 8、运算符重载 …

将mysql数据库表结构导出成DBML格式

前言 DBML&#xff08;数据库标记语言&#xff09;是一种简单易读的 DSL 语言&#xff0c;用于定义数据库结构。 因为需要分析商品模块的表设计是否合理&#xff0c;所以需要图形化表&#xff0c;并显示表之前的关系。 想来想去&#xff0c;找到了DBML。所以就需要将数据库结构…

玩转tokenizer

&#x1f31f; 案例 1&#xff1a;加载现成的 BERT 分词器from tokenizers import Tokenizer# 加载一个预训练的 BERT tokenizer&#xff08;文件需要提前下载&#xff0c;比如bert-base-uncased&#xff09; tokenizer Tokenizer.from_file("bert-base-uncased-tokenize…

Day53--图论--106. 岛屿的周长(卡码网),110. 字符串接龙(卡码网),105. 有向图的完全联通(卡码网)

Day53–图论–106. 岛屿的周长&#xff08;卡码网&#xff09;&#xff0c;110. 字符串接龙&#xff08;卡码网&#xff09;&#xff0c;105. 有向图的完全联通&#xff08;卡码网&#xff09; 106. 岛屿的周长&#xff08;卡码网&#xff09; 方法&#xff1a;深搜 思路&am…

Elasticsearch 数据建模与映射(Mapping)详解

在 Elasticsearch 中&#xff0c;数据建模与映射&#xff08;Mapping&#xff09; 是决定搜索性能、存储效率和功能支持的核心环节。合理的映射设计能让搜索更精准、聚合更高效、存储更节省。 本文将全面详解 Elasticsearch 的 数据建模原则、字段类型、动态映射、自定义分析器…

5G工业一体机汽车零部件工厂的无纸化管理

在全球数字化转型的浪潮中&#xff0c;制造业对信息化、智能化的需求日益强烈。尤其是在汽车零部件领域&#xff0c;生产线的复杂性、质量追溯的苛刻性以及对效率的高要求&#xff0c;迫切需要一种高效、可靠、可扩展的管理模式。以“5G工业一体机”为核心的无纸化管理&#xf…

项目管理工具

1、概述IT 项目生命周期通常可分为启动、规划、执行、监控与控制、收尾五个核心阶段&#xff0c;每个阶段的目标和任务不同&#xff0c;所依赖的工具也各有侧重。以下按阶段梳理常用工具&#xff0c;涵盖项目管理、协作、技术开发等多个维度。2、启动阶段&#xff1a;明确项目目…

Linux 进程、线程与 exec/系统调用详解

1. wait 与 waitpid —— 子进程资源回收1.1 waitpid_t wait(int *wstatus);功能&#xff1a;阻塞等待&#xff0c;回收任意子进程的资源空间。参数&#xff1a;wstatus&#xff1a;保存子进程退出状态的变量地址NULL&#xff1a;不保存退出状态返回值&#xff1a;成功&#xf…