【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.rhkb.cn/news/424920.html

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

相关文章

单线程与2个线程的简易理解

前言 有个需要10个步骤完成的任务,假设每个步骤需要1秒 单线程耗费10秒完成任务 2根线程可能耗费6秒,也可能更少 单线程程序 单线程下,步骤按照次序顺序执行,共计耗费10秒 2个线程的程序 有步骤可以在同一时刻同时运行&…

python-素数中的等差数列

题目描述 质数是在数论中很有意思的数,有很多题都可以围绕它来出,就如你眼前所见的这道题。 给定一个闭区间 [a,b] ,将此范围内的所有素数进行从小到大排序,对于连续的素数,我们可以发现很多等差数列(元素个数大于等于 3 )&#x…

【Leetcode:1184. 公交站间的距离 + 模拟】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

第十一章 【后端】商品分类管理微服务(11.1)——创建父工程

第十一章 【后端】商品分类管理微服务 11.1 创建父工程 项目名称:EasyTradeManagerSystem:Easy 表示简单易用,Trade 表示交易,Manager 表示管理,System 表示系统,强调系统在商品交易管理方面的便捷性,简称 etms。 新建工程 yumi-etms yumi-etms 作为所有模块的父工程,…

汽车免拆诊断案例 | 沃尔沃V40 1.9TD断续工作

故障现象 一辆04款的沃尔沃V40 1.9 TD,发动机代码D4192T3,使用博世EDC15C发动机管理。客户说车子断续工作,怀疑是正时皮带出现问题。卸下上皮带盖,检查发现皮带仍然在原来的位置上并且没有出现松动。起动发动机,车辆能…

整数在内存中的存储原码反码补码

目录 1.整数在内存中以二进制的形式存在 1.1(正数存储情况) 1.2 负数存储情况 1.3整数的补码如何得到原码 2.无符号整数的原反补码 小心!VS2022不可直接接触,否则!没这个必要,方源面色淡然一把抓住&am…

使用原生HTML的drag实现元素的拖拽

HTML 拖放(Drag and Drop)接口使应用程序能够在浏览器中使用拖放功能。例如,用户可使用鼠标选择可拖拽(draggable)元素,将元素拖拽到可放置(droppable)元素,并释放鼠标按…

vue3使用provide和inject传递异步请求数据子组件接收不到

前言 一般接口返回的格式是数组或对象,使用reactive定义共享变量 父组件传递 const data reactive([])// 使用settimout模拟接口返回 setTimeout(() > {// 将接口返回的数据赋值给变量Object.assign(data, [{ id: 10000 }]) }, 3000);provide(shareData, dat…

C++第五十一弹---IO流实战:高效文件读写与格式化输出

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】 目录 1. C语言的输入与输出 2. 流是什么 3. CIO流 3.1 C标准IO流 3.2 C文件IO流 3.2.1 以写方式打开文件 3.2.1 以读方式打开文件 4 stringstre…

「数组」十大排序:精讲与分析(C++)

概述 截止目前,我们已经讲解并分析了十种最常见的排序算法,下附对应文章链接和全体Code。 链接 「数组」冒泡排序|选择排序|插入排序 / 及优化方案(C) 「数组」归并排序 / if语句优化|小区间插入优化(C&#xff09…

在k8s中,客户端访问服务的链路流程,ingress--->service--->deployment--->pod--->container

ingress是一个API资源。 其核心作用是nginx网页服务器。 当客户端访问服务器不同的url时, 用不同的location提供服务。 在k8s之外,nginx的配置一般如下: http {server {listen 80;server_name localhost;location / {root html; …

HarmonyOS开发之(下拉刷新,上拉加载)控件pulltorefresh组件的使用

效果图: 一:下载安装(地址:OpenHarmony-SIG/PullToRefresh) ohpm install ohos/pulltorefresh 二:使用lazyForEarch的数据作为数据源 export class BasicDataSource implements IDataSource{private l…

外卖会员卡是不是一个骗局?

大家好,我是鲸天科技千千,大家都知道我是做小程序开发的,平时会给大家分享一些互联网相关的创业项目,感兴趣的可以跟我关注一下。 首先就是要搭建一个自己的外卖会员卡系统小程序,我们自己的工作就是把这个小程序推广…

海外云手机——跨国业务的高效工具

海外云手机是一种基于云计算的虚拟手机服务,依托海外服务器实现跨国网络访问。这项服务不仅具备传统智能手机的所有功能,还突破了地域限制,为跨国业务提供更加便捷、高效、安全的解决方案。 随着全球化的加速和互联网的快速普及,跨…

LabVIEW减速机加载控制系统

为了保障减速机的产品质量,开发了一套基于LabVIEW的减速机加载控制系统。该系统利用先进的传感技术与自动化控制理念,实现了减速机性能的全面测试与分析,有效提升了生产线的自动化水平与检测效率。 项目背景 随着工业自动化水平的不断提高&a…

002 JavaClent操作RabbitMQ

Java Client操作RabbitMQ 文章目录 Java Client操作RabbitMQ1.pom依赖2.连接工具类3.简单模式4.工作队列模式(work)公平调度示例 5.发布/订阅模式(fanout)交换机绑定示例代码 6.路由模式(direct)7.Topic匹配…

基于yolov8的无人机检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv8的无人机检测系统是一项前沿技术,结合了YOLOv8深度学习模型的强大目标检测能力与无人机的灵活性。YOLOv8作为YOLO系列的最新版本,在检测精度和速度上均有显著提升,特别适用于复杂和高动态的场景。 该系统通过捕获实…

quartz 搭配SQL Server时出现deadlock的解决方案

背景: 最近在折腾换OA系统,遇到了一个很诡异的事情。在测试阶段,OA系统经常莫名地宕机,停止响应。查下来,发现是数据库出现大量死锁,耗尽了连接池。出现问题的语句是一样的,问题锁定在QRTZ_TRI…

学习使用在windows系统上安装vue前端框架以及环境配置图文教程

学习使用在windows系统上安装vue前端框架以及环境配置图文教程 1、安装nodejs2、安装vue3、安装Vue-cli脚手架4、安装高版本5、创建vue项目6、启动项目7、配置开发环境8、发布项目 1、安装nodejs 点我查看教程 2、安装vue winR,打开cmd cnpm install vue -g表示安…

COMDEL电源维修CLX2500康戴尔射频电源维修

美国COMDEL射频电源维修常见型号包括:CLX2750;CLX2500;CLX-600H;CX600AS;CX-5000S;CX-3500S;CX-2500S;CV500;CDX2000等。 Comdel成立于1966年,总部设在马萨诸…