GO语言基础笔记(一):基本语法与数据类型

基本语法

  1. 变量声明

    • 使用 var 关键字,如 var x int 声明一个整型变量 x
    • 简短声明方式,如 y := 0 直接初始化 y
  2. 函数定义

    • 使用 func 关键字定义函数,如 func add(a int, b int) int { return a + b }
  3. 控制结构

    • if 语句、for 循环等,语法类似于其他编程语言。
  4. 导入包

    • 使用 import 关键字导入包,如 import "fmt"
package main // 定义包名,每个Go程序都是由包组成的import "fmt" // 导入fmt包,用于格式化输出// main函数是每个可执行程序的入口点
func main() {var x int = 10 // 使用var关键字声明一个整型变量x并初始化为10y := 20        // 简短声明方式,声明并初始化变量y为20sum := add(x, y) // 调用add函数,传入x和y作为参数fmt.Println("Sum:", sum) // 使用fmt包的Println函数打印结果// 使用for循环从1加到10for i := 1; i <= 10; i++ {fmt.Println(i)}// 使用if语句判断sum是否大于20if sum > 20 {fmt.Println("Sum is greater than 20")} else {fmt.Println("Sum is less than or equal to 20")}
}// add函数接收两个int类型的参数,并返回它们的和
// 函数返回值的类型定义在参数列表之后
func add(a int, b int) int {return a + b // 返回a和b的和
}

数据类型

基本类型

  1. 整型(Integers)

    • 有符号整型:int8, int16, int32, int64
    • 无符号整型:uint8 (或 byte), uint16, uint32, uint64
    • 通用整型:int, uint(大小依赖于实现,通常为32或64位)
    • 特殊整型:uintptr(用于存储指针)
  2. 浮点型(Floats)

    • float32, float64
  3. 复数型(Complex Numbers)

    • complex64(32位实部和虚部),complex128(64位实部和虚部)
  4. 布尔型(Booleans)

    • bool(值为 truefalse
  5. 字符串(Strings)

    • string(使用双引号 "..." 或反引号 `...`

复合类型

  1. 数组(Arrays)

    • [4]int(含有4个整数的数组)
  2. 切片(Slices)

    • []int(整数的切片,长度可变)
  3. 结构体(Structs)

    • struct { Name string; Age int }
  4. 映射(Maps)

    • map[string]int(键为字符串,值为整数的映射)

引用类型

  1. 指针(Pointers)

    • *int(指向整数的指针)
  2. 切片(Slices)

    • 如前所述,切片是引用类型。
  3. 映射(Maps)

    • 如前所述,映射是引用类型。
  4. 通道(Channels)

    • 用于在不同Goroutines间进行通信,如 chan int
  5. 函数类型(Function Types)

    • func(int) bool(接收一个整数参数,返回布尔值的函数)

接口类型(Interfaces)

  • interface{}(空接口,可以持有任何类型的值)

类型代码示例:

package mainimport ("fmt""math/cmplx""unsafe"
)// 定义一个结构体
type Person struct {Name stringAge  int
}// 定义一个接口
type Geometry interface {area() float64
}// 主函数
func main() {// 整型var a int8 = 127var b uint16 = 65535var c int = 10000var ptr uintptr = uintptr(unsafe.Pointer(&c))// 浮点型var d float32 = 3.14var e float64 = 2.71828// 复数型var f complex64 = complex(5, 12)var g complex128 = cmplx.Sqrt(-5 + 12i)// 布尔型var h bool = true// 字符串var i string = "Hello, Go!"// 数组var j [4]int = [4]int{1, 2, 3, 4}// 切片k := []int{5, 6, 7, 8}// 结构体l := Person{Name: "Alice", Age: 30}// 映射m := map[string]int{"one": 1, "two": 2}// 指针n := &c// 通道o := make(chan int)// 函数类型var p func(int) bool = func(x int) bool {return x%2 == 0}// 接口var q Geometry = l// 打印变量值fmt.Println("int8:", a)fmt.Println("uint16:", b)fmt.Println("int:", c)fmt.Println("uintptr:", ptr)fmt.Println("float32:", d)fmt.Println("float64:", e)fmt.Println("complex64:", f)fmt.Println("complex128:", g)fmt.Println("bool:", h)fmt.Println("string:", i)fmt.Println("array:", j)fmt.Println("slice:", k)fmt.Println("struct:", l)fmt.Println("map:", m)fmt.Println("pointer:", *n)fmt.Println("function:", p(10))fmt.Println("interface:", q.area())// 使用通道go func() {o <- 123}()fmt.Println("channel:", <-o)
}// 实现Person类型的area方法
func (p Person) area() float64 {return float64(p.Age) // 随意计算的“面积”
}

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

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

相关文章

Arduino上U8g2库显示中文的经历

u8g2自带很多中文库&#xff1b;但是向u8g2_font_wqy12_t_chinese3 比较全的应该是u8g2_font_wqy12_t_gb2312 这个&#xff0c;只是我还没有调用成功 这个库&#xff0c;中文就显示不全&#xff1b;有些没有定义&#xff0c;如百家姓 #include <Arduino.h> #include <…

Java经典框架之Spring

Java经典框架之Spring Java 是第一大编程语言和开发平台。它有助于企业降低成本、缩短开发周期、推动创新以及改善应用服务。如今全球有数百万开发人员运行着超过 51 亿个 Java 虚拟机&#xff0c;Java 仍是企业和开发人员的首选开发平台。 课程内容的介绍 1. Spring简介 2.…

HA启动Advanced SSH Web Terminal 提示附加组件似乎尚未准备就绪,它可能仍在启动。是否要再试一次?

环境&#xff1a; Home Assistant OS11.1 Advanced SSH & Web Terminal 17.0 问题描述&#xff1a; HA安装好SSH加载项&#xff0c;启动Advanced SSH & Web Terminal 提示附加组件似乎尚未准备就绪&#xff0c;它可能仍在启动。是否要再试一次&#xff1f; 解决方案…

设计模式之-策略模式,快速掌握策略模式,通俗易懂的讲解策略模式以及它的使用场景

系列文章目录 设计模式之-6大设计原则简单易懂的理解以及它们的适用场景和代码示列 设计模式之-单列设计模式&#xff0c;5种单例设计模式使用场景以及它们的优缺点 设计模式之-3种常见的工厂模式简单工厂模式、工厂方法模式和抽象工厂模式&#xff0c;每一种模式的概念、使用…

.NET中的Swagger使用

目录 前言 一、Swagger是什么&#xff1f; 二、如何Swagger文档说明的信息 1.在AddSwaggerGen方法中写入文档信息 2.运行效果 二、文档UI界面标题、路由设置 1.在中间件UseSwaggerUI方法中配置 三、文档UI界面添加接口注释 1.在 .csproj中配置 2.在AddSwaggerGen方法中配置Incl…

Apache Spark简介与历史发展

在当今信息爆炸的时代&#xff0c;大数据处理已成为了现实。企业和组织需要处理海量数据来获得有用的信息和见解。Apache Spark作为一个开源的大数据处理框架&#xff0c;已经在大数据领域占据了重要地位。 Apache Spark简介 Apache Spark是一个用于大规模数据处理的快速、通…

【zookeeper特点】

文章目录 1. Zookeeper介绍2、ZooKeeper数据结构 1. Zookeeper介绍 ZooKeeper 是一个开源的分布式协调框架&#xff0c;是Apache Hadoop 的一个子项目&#xff0c;主要用来解决分 布式集群中应用系统的一致性问题。Zookeeper 的设计目标是将那些复杂且容易出错的分布式一致性 …

java8 reduce操作

什么是 reduce 操作 reduce 操作是一种通用的归约操作&#xff0c;它可以从一个元素序列中生成一个单一的结果&#xff0c;通过反复将一个组合操作应用到序列中的元素上。例如&#xff0c;我们可以使用 reduce 操作来计算一个整数序列的和&#xff0c;或者将一个字符串序列拼接…

EventSource和WebSocket

eventSource&#xff08;事件源&#xff09;和WebSocket都是用于实现服务器与客户端之间的实时通信的技术&#xff0c;但它们在一些方面有所不同。 eventSource eventSource是HTML5中的一种技术&#xff0c;它允许服务器向客户端发送单向的、持久的、自动的消息。它基于HTTP协…

新版IDEA中Git的使用(一)

说明&#xff1a;本文介绍如何在新版IDEA中使用Git 创建项目 首先&#xff0c;在GitLab里面创建一个项目&#xff08;git_demo&#xff09;&#xff0c;克隆到桌面上。 然后在IDEA中创建一个项目&#xff0c;项目路径放在这个Git文件夹里面。 Git界面 当前分支&Commit …

GO语言基础笔记(五):包的介绍

在Go语言中&#xff0c;包&#xff08;package&#xff09;是代码组织和重用的基本单位。Go的标准库中包含了许多实用的包&#xff0c;它们提供了从基础数据处理到复杂网络编程等各种功能。下面是一些常用的Go标准库包及其作用的介绍&#xff1a; 目录 1. fmt 2. net/http …

Qt/QML编程学习之心得:在QML中调用fileDialog(十六)

Qt中有一些内置的对话框dialog,比如 在QWidget工程中使用比较容易,比如 #include <QFileDialog>fileName = QFileDialog::getOpenFileName(this, tr("Open Image"), "/home/jana", tr("Image Files (*.png *.jpg *.bmp)")); 那么在QM…

使用eclipse创建一个java文件并运行

启动 Eclipse 并创建一个新的 Java 项目: 打开 Eclipse。 选择 “File” > “New” > “Java Project”&#xff08;文件 > 新建 > Java 项目&#xff09;。 在弹出的窗口中&#xff0c;为你的项目命名&#xff0c;比如 MyJavaProject。 点击 “Finish”&#xff…

word2003 open word2007+

Win 7 C:\Documents and Settings\Administrator\Application Data\Microsoft\Templates 还是不行&#xff0c;重装office2003吧&#xff0c;再安装转换插件&#xff0c;但是再高版本好像没转换工具

由正规表达式构造DFA,以及DFA的相关化简

目录 1.由正规式到DFA 首先讲如何从正规式到NFA 如何从NFA到DFA 2.DFA的化简 3.DFA和NFA的区别 1.由正规式到DFA 正规式--->NFA---->DFA 首先讲如何从正规式到NFA 转换规则: 例题1&#xff1a;这里圆圈里面的命名是随意的&#xff0c;只要能区别开就可以了 如何…

R语言中的函数28:Reduce(), Filter(), Find(), Map(), Negate(), Position()

文章目录 介绍Reduce()实例 Filter()实例 Find()实例 Map()实例 Negate()实例 Position()实例 介绍 R语言中的Reduce(), Filter(), Find(), Map(), Negate(), Position()是base包中的一些高级函数。随后&#xff0c;很多包也给这些函数提供了更多的扩展。 Reduce() 该函数根…

Leetcode 第 120 场双周赛 Problem C 统计移除递增子数组的数目 II(Java + 双指针 + 前缀和)

题目 统计移除递增子数组的数目 II给你一个下标从 0 开始的 正 整数数组 nums 。如果 nums 的一个子数组满足&#xff1a;移除这个子数组后剩余元素 严格递增 &#xff0c;那么我们称这个子数组为 移除递增 子数组。比方说&#xff0c;[5, 3, 4, 6, 7] 中的 [3, 4] 是一个移除…

助力打造清洁环境,基于YOLOv4开发构建公共场景下垃圾堆放垃圾桶溢出检测识别系统

公共社区环境生活垃圾基本上是我们每个人每天几乎都无法避免的一个问题&#xff0c;公共环境下垃圾投放点都会有固定的值班时间&#xff0c;但是考虑到实际扔垃圾的无规律性&#xff0c;往往会出现在无人值守的时段内垃圾堆放垃圾桶溢出等问题&#xff0c;有些容易扩散的垃圾比…

【UML】第12篇 序列图(1/2)——基本概念和构成

目录 一、什么是序列图&#xff08;Sequence Diagram&#xff09; 1.1 定义 1.2 主要用途 1.3 序列图和BPMN的区别和联系 二、序列图的构成 2.1 对象 2.2 生命线 2.3 消息 2.4 激活 序列图&#xff0c;是我个人认为的用处最多的一种图。产品和研发的同学&#xff0c;都…

向量投影:如何将一个向量投影到矩阵的行向量生成子空间?

向量投影&#xff1a;如何将一个向量投影到矩阵的行向量生成子空间&#xff1f; 前言 本问题是在学习Rosen梯度投影优化方法的时候遇到的问题&#xff0c;主要是对于正交投影矩阵(NT(NNT)-1N)的不理解&#xff0c;因此经过查阅资料&#xff0c;学习了关于向量投影的知识&…