【Go开发】Go语言基本语法入门:数据类型与方法定义

在这里插入图片描述

文章目录

  • 环境准备
  • 一、引言
  • 二、Var关键字
  • 三、数据类型
    • 1. 整型
      • 符号表示
      • 值的范围
    • 2. 浮点型
      • 精度
      • 范围
      • 性能
    • 3. 布尔型
    • 4. 字符串
  • 三、变量声明
    • 1. 指定变量类型
    • 2. 自动推导类型
    • 3. 批量声明
  • 四、方法定义
  • 五、总结

环境准备

开发环境:MacOS
Go版本:go version go1.23.1 darwin/amd64
开发工具:GoLand

一、引言

Go语言,也称为Golang,是由Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。自2009年发布以来,Go语言以其简洁的语法、高效的性能和出色的并发处理能力,在云计算、微服务等领域得到了广泛应用。本文将带你了解Go语言的基本语法,包括数据类型、变量声明、方法定义等。

二、Var关键字

在Go语言中,关键字 var 用于声明变量。以下是 var 的主要用途和作用:

声明变量: var 关键字用于在Go语言中声明一个新的变量。声明变量时,你可以指定变量的类型和名称。
初始化变量: 你可以在声明变量的同时为其赋一个初始值,也可以先声明后赋值。
批量声明: 使用 var 关键字,可以一次性声明多个变量。

具体使用可见下文

三、数据类型

Go语言的数据类型分为基本数据类型和复合数据类型。基本数据类型包括整型、浮点型、布尔型等,而复合数据类型包括数组、切片、映射、结构体等。

1. 整型

Go语言整数类型分为无符号整数(unsigned integers)和有符号整数(signed integers)。提供了以下几种整型:

  • int8、int16、int32、int64:分别表示8位、16位、32位、64位有符号整数。
  • uint8、uint16、uint32、uint64:分别表示8位、16位、32位、64位无符号整数。
  • int:根据平台可能是32位或64位整数。
  • uint:根据平台可能是32位或64位无符号整数。
    示例代码:
var a int = 10
var b int8 = 20
var c uint32 = 30

符号表示

  • 无符号整数:只能表示非负数,即零和正整数。
  • 有符号整数:可以表示负数、零和正整数。

值的范围

  • 无符号整数:其值的范围从0开始到最大正整数值。
  • 有符号整数:其值的范围从最小负整数值到最大正整数值。

2. 浮点型

Go语言提供了两种浮点型:

  • float32:32位浮点数。
  • float64:64位浮点数。
    示例代码:
var d float32 = 3.14
var e float64 = 2.71828

精度

  • float32:是32位(或4字节)的单精度浮点数,遵循IEEE 754标准。它通常有大约7到8位十进制数的精度。
  • float64:是64位(或8字节)的双精度浮点数,也遵循IEEE 754标准。它通常有大约15到16位十进制数的精度。

范围

  • float32:能表示的数值范围大约是±1.18×10-38到±3.4×1038(负数和正数)。
  • float64:能表示的数值范围大约是±2.23×10-308到±1.8×10308。

性能

  • 在某些情况下,float32 的计算可能会比 float64 更快,因为32位浮点数的运算通常需要更少的CPU周期。
  • 然而,现代CPU通常对64位浮点数有更好的支持,所以在很多情况下,float64 的性能和 float32 相差不大。

3. 布尔型

布尔型数据只有两个值:true和false。
示例代码:

var f bool = true

4. 字符串

字符串是由单个字节连接起来的字符序列,使用双引号表示。
示例代码:

var g string = "Hello, World!"

三、变量声明

Go语言提供了三种变量声明方式:

1. 指定变量类型

var name string
name = "John"

2. 自动推导类型

name := "John"

3. 批量声明

var (name stringage  int
)
name = "John"
age = 30

四、方法定义

在Go语言中,方法是一种特殊的函数,它属于一个类型。方法定义格式如下:

func (receiver ReceiverType) MethodName(params) returnType {// 方法体
}

示例代码:

// 声明这是一个可执行程序
package main// 导入fmt包用于格式化输出
import "fmt"/**
* Person结构体定义
**/
type Person struct {Name stringAge  int
}
/**
* 定义一个方法
**/
func (p Person) SayHello() {fmt.Printf("Hello, my name is %s. I am %d years old.\n", p.Name, p.Age)
}// 程序启动方法
func main() {// 创建一个新的Person实例person := Person{Name: "John", Age: 30}person.SayHello()
}

运行上述代码,输出结果为:

Hello, my name is John. I am 30 years old.

在这里插入图片描述

五、总结

本文介绍了Go语言的基本语法,包括数据类型、变量声明和方法定义。掌握这些基础知识,可以帮助你更好地学习Go语言,为后续深入学习打下坚实基础。在实际开发过程中,不断实践和积累经验,才能熟练运用Go语言解决问题。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

计算机毕业设计之:基于微信小程序的校园流浪猫收养系统(源码+文档+讲解)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

「漏洞复现」灵当CRM marketing/index.php SQL注入漏洞

0x01 免责声明 请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。工具来自网络,安全性自测,如有侵权请联系删…

如何使用ssm实现社区流浪动物救助领养系统的设计与开发+vue

TOC ssm666社区流浪动物救助领养系统的设计与开发vue 第一章 课题背景及研究内容 1.1 课题背景 信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安…

Python编码系列—Python策略模式:灵活应对变化的算法策略

🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中…

微软AI核电计划

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

Django学习实战篇六(适合略有基础的新手小白学习)(从0开发项目)

前言: 上一章中,我们完成了页面样式的配置,让之前简陋的页面变得漂亮了些。 整理一下目前已经完成的系统,从界面上看,已经完成了以下页面: 首页分类列表页标签列表页口博文详情页 这离我们的需求还有些距离&#xff0…

Python | Leetcode Python题解之第423题从英文中重建数字

题目: 题解: class Solution:def originalDigits(self, s: str) -> str:c Counter(s)cnt [0] * 10cnt[0] c["z"]cnt[2] c["w"]cnt[4] c["u"]cnt[6] c["x"]cnt[8] c["g"]cnt[3] c["h…

【完整梳理验证】企业微信第三方应用接入全流程java版

企业微信第三方应用接入全流程java版 1. 概念与流程1.1 概念1、企业内部应用2、`第三方应用`3、代开发自建应用1.2 流程1.2.1 全局流程1.2.2 应用配置1.2.3 数据流程2. 核心文档2.1 理解第三方应用开发流程和概念2.1.1 应用开发阶段2.1.2 应用推广阶段2.1.3 基本流程1)前期应用…

C++ | Leetcode C++题解之第421题数组中两个数的最大异或值

题目: 题解: struct Trie {// 左子树指向表示 0 的子节点Trie* left nullptr;// 右子树指向表示 1 的子节点Trie* right nullptr;Trie() {} };class Solution { private:// 字典树的根节点Trie* root new Trie();// 最高位的二进制位编号为 30static…

leetcode第十题:正则表达式匹配

给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 . 和 * 的正则表达式匹配。 . 匹配任意单个字符* 匹配零个或多个前面的那一个元素 所谓匹配,是要涵盖 整个 字符串 s 的,而不是部分字符串。 示例 1: 输入:s…

TMS320F28335的定时器中断实验

TTMS320F28335 的 CPU 定时器有 3 个且均为 32 位,分别是 Timer0、Timer1、Timer2, 其中 Timer2 是为操作系统 DSP/BIOS 保留的,当未移植操作系统时,可用来做普 通的定时器。这三个定时器的中断信号分别为 TINT0,TINT1,TINT2,分别对应中断向量于 INT1,INT13,INT14。 1 …

使用 NCache 将 Java 微服务扩展到极致性能

微服务已成为软件开发领域的一种变革性架构方法,提供了从整体结构到更加模块化和可扩展的系统的范式转变。微服务的核心是将复杂的应用程序分解为更小的、可独立部署的服务,这些服务可以无缝通信,从而提高敏捷性、灵活性和易维护性。这种分散…

动态规划day38|322. 零钱兑换(背包满了吗?最小值怎么表示?)、279. 完全平方数、139. 单词拆分、多重背包要点、背包问题大总结

动态规划day38|322. 零钱兑换(背包满了吗?最小值怎么表示?)、279. 完全平方数、139. 单词拆分、多重背包要点、背包问题大总结 322. 零钱兑换279. 完全平方数139. 单词拆分多重背包要点背包问题大总结 322. 零钱兑换 给你一个整数…

后端-项目创建与sql

1.创建文件 1.在webcontent下创建.html文件 2. 在java resources下创建包,右键包创建servlet服务生.(要是创建普通的类,里面的注解里的东西不能重复) 注意:class的名字要和文件名一样,注解里的servlet是独一无二的。 …

最新 idea 2024 入门使用详细教程

IntelliJ IDEA:这是一款由JetBrains公司开发的Java集成开发环境(Integrated Development Environment),被广泛认为是目前Java开发者最好的集成开发工具之一。它支持Java、Groovy、Kotlin等多种编程语言,并且提供了丰富…

HCIA--实验十七:EASY IP的NAT实现

一、实验内容 1.需求/要求: 通过一台PC,一台交换机,两台路由器来成功实现内网访问外网。理解NAT的转换机制。 二、实验过程 1.拓扑图: 2.步骤: 1.PC1配置ip地址及网关: 2.AR1接口配置ip地址&#xff1…

Java免税商品优选商城:Spring Boot实战

第二章 系统开发关键技术 2.1 JAVA技术 Java主要采用CORBA技术和安全模型,可以在互联网应用的数据保护。它还提供了对EJB(Enterrise JavaBeans)的全面支持,java servlet AI,JS(java server ages&#xff09…

Tomcat中BIO和NIO的区别(Tomcat)

BIO Tomcat中BIO的模型和理论很简单,例图如下 1.Acceptor线程死循环阻塞接收客户端的打过来的socket请求 2.接收到请求之后打包成一个SocketProcessor(Runnable),扔到线程池中读取/写入数据 参数配置 1.Acceptor默认线程是1&#…

2024年1月Java项目开发指南17:自动接口文档配置

Knife4j 文档 :https://doc.xiaominfo.com/ 有能力的建议自己去看文档配置,本文仅做参考,因为官方文档会更新,本文不会,以后说不定本文就过时了。 ok,我们继续。虽然本文是2024年1月Java项目开发指南17&…

JVM面试题-说一下JVM主要组成部分及其作用

总体来说,方法区和堆是所有线程共享的内存区域;而虚拟机栈、本地方法栈和程序计数器的运行是线程私有的内存区域,运行时数据区域就是我们常说的JVM的内存。 类加载子系统:根据给定的全限定名类名(如:java.lang.Object…