首页 > 其他分享 >Go 语言变量类型:从入门到精通,一篇搞定所有知识点!

Go 语言变量类型:从入门到精通,一篇搞定所有知识点!

时间:2024-11-05 15:45:01浏览次数:3  
标签:Println 知识点 搞定 int fmt var 类型 整型 Go

Go语言变量类型

1. 基本类型

Go 语言中的基本类型主要包括数值类型、布尔类型和字符串类型。

1.1 数值类型

  • 整型
    • int:根据系统架构(32 位或 64 位)决定大小,通常用作默认整型。
    • int8:8 位有符号整型,范围:-128 到 127。
    • int16:16 位有符号整型,范围:-32,768 到 32,767。
    • int32:32 位有符号整型,范围:-2,147,483,648 到 2,147,483,647。
    • int64:64 位有符号整型,范围:-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807。
    • uint:无符号整型,与 int 大小相同,范围从 0 到 2^(bits)-1。
    • uint8:8 位无符号整型,范围:0 到 255。
    • uint16uint32uint64:无符号整型,范围与相应的有符号整型相同。
var a int = 10
var b uint = 20
var c int64 = 10000000000
  • 浮点型
    • float32:32 位浮点数。
    • float64:64 位浮点数,精度更高。
var pi float32 = 3.14
var e float64 = 2.718281828459
  • 复数类型
    • complex64:64 位复数,实部和虚部分别是 float32
    • complex128:128 位复数,实部和虚部分别是 float64
var z complex64 = 1 + 2i // 1 是实部,2i 是虚部

1.2 布尔类型

布尔类型只有两个值:truefalse,用于条件判断和控制流。

var isAlive bool = true

1.3 字符串类型

字符串是 UTF-8 编码的字符序列。在 Go 中,字符串是不可变的(immutable),一旦创建就不能修改。

var greeting string = "Hello, World!"

2. 复合类型

复合类型是由多个基本类型组合而成的,主要包括数组、切片、字典、结构体和接口等。

2.1 数组

数组是固定长度的同类型元素的集合。数组的长度是类型的一部分,因此 [3]int[4]int 是不同的类型。

var arr [3]int // 声明一个长度为 3 的整型数组
arr[0] = 1
arr[1] = 2
arr[2] = 3

2.2 切片

切片是动态数组,可以在运行时调整大小。切片是基于数组构建的,具有更灵活的操作。

var slice []int // 声明一个整型切片
slice = append(slice, 1) // 添加元素
slice = append(slice, 2, 3, 4) // 添加多个元素

2.3 字典(map)

字典是键值对集合,用于快速查找。键必须是可比较的类型,值可以是任意类型。

var m map[string]int // 声明一个字符串到整型的映射
m = make(map[string]int)
m["one"] = 1
m["two"] = 2

2.4 结构体

结构体是用户定义的复合类型,可以包含多个不同类型的字段。

type Person struct {
    Name string
    Age  int
}

var p Person
p.Name = "Alice"
p.Age = 30

2.5 接口

接口是方法的集合,允许你定义某些行为。任何类型只要实现了接口中定义的方法,就可以被视为该接口的实现。

type Stringer interface {
    String() string
}

func Print(s Stringer) {
    fmt.Println(s.String())
}

3. 类型转换

Go 允许进行类型转换,但需要显式声明。

var a int = 10
var b float64 = float64(a) // 将 int 转换为 float64

4. 零值

在 Go 中,变量在声明时会被赋予默认的“零值”。对于不同类型的零值如下:

  • 整型:0
  • 浮点型:0.0
  • 布尔型:false
  • 字符串:""(空字符串)
  • 切片、字典、指针、接口:nil

5. 示例

下面是一个完整的 Go 程序示例,展示了各种变量类型的使用:

package main

import (
    "fmt"
)

func main() {
    // 基本类型
    var a int = 10
    var b float64 = 3.14
    var isAlive bool = true
    var greeting string = "Hello, Go!"

    fmt.Println("Integer:", a)
    fmt.Println("Float:", b)
    fmt.Println("Boolean:", isAlive)
    fmt.Println("String:", greeting)

    // 数组
    var arr [3]int = [3]int{1, 2, 3}
    fmt.Println("Array:", arr)

    // 切片
    slice := []int{1, 2, 3}
    slice = append(slice, 4, 5)
    fmt.Println("Slice:", slice)

    // 字典
    m := make(map[string]int)
    m["one"] = 1
    m["two"] = 2
    fmt.Println("Map:", m)

    // 结构体
    type Person struct {
        Name string
        Age  int
    }

    p := Person{Name: "Alice", Age: 30}
    fmt.Println("Person:", p)

    // 接口
    type Stringer interface {
        String() string
    }

    func (p Person) String() string {
        return fmt.Sprintf("Name: %s, Age: %d", p.Name, p.Age)
    }

    Print(p)
}

func Print(s Stringer) {
    fmt.Println(s.String())
}

在这个示例中,我们展示了基本类型、复合类型(数组、切片、字典、结构体)、接口的用法,以及如何定义和实现接口。

标签:Println,知识点,搞定,int,fmt,var,类型,整型,Go
From: https://blog.csdn.net/2302_79730293/article/details/143497361

相关文章

  • golang占位符%v、%+v、%#v详解
    目录%v%+v%#v在Go语言中,fmt包提供了格式化字符串的功能,类似于C语言的printf函数。fmt包中的%v、%+v和%#v是用于格式化输出的占位符,它们各自有不同的用途。%v含义:%v表示以默认格式(值)输出变量。对于基本类型如整数、浮点数等,它会直接输出其值;对于结构体,它会输出......
  • 每天两个知识点 拷贝构造函数和赋值运算符重载的作用&C++模板及其类型
    1)拷贝构造函数和赋值运算符重载的作用拷贝构造函数(CopyConstructor)和赋值运算符重载(AssignmentOperatorOverload)是C++中处理对象复制和赋值的两个重要机制。拷贝构造函数:拷贝构造函数是一个特殊的构造函数,它用于创建一个新对象,并将其初始化为另一个同类型对象的副本。......
  • Google Play 三季度应用下架报告:下架约 180万款应用,同比增长 80%
    大家好,我是牢鹅!聊到GooglePlay封号下架,相信大伙应该不陌生了吧!由于前些年各种捞偏门的App以及大量马甲包的出现,让谷歌不停的更新它们的审核机制,特别是近年谷歌开始大规模使用大模型对开发者的账号、应用扫描,导致很多做绿色合规应用的开发者被误封与下架,这也大大提高了普通开......
  • 九、Go语言快速入门之map
    文章目录Map:one:使用`Map`:star2:声明和初始化:star2:`map`容量:star2:用切片作为`map`的值:two:测试键值对是否存在及删除元素:three:`For`-`range`:four:`map`类型的切片:five:map的排序:six:将map的健和值对调......
  • unity3d————叉乘的知识点
    一、向量叉乘的知识点定义与公式:向量叉乘的定义为:对于两个三维向量a和b,它们的叉乘结果是一个向量c,记为c=a×b。叉乘的计算公式为:c=(y1z2-y2z1)i+(x2z1-x1z2)j+(x1y2-x2y1)k,其中a=(x1,y1,z1),b=(x2,y2,z2),i、j、k分别为x、y、z轴的单位向量。几何意义:叉乘得到的向量c与......
  • MySQL导入sql文件报错:2006 - MySQL server has gone away(转载)
    今天在在MySQL导入sql文件,导入失败,出现如下错误:2006-MySQLserverhasgoneaway,之前也遇到过,又一次遇到,还是记录一下吧!【问题】导入的sql文件大概有15M,导入过程中报错:2006-MySQLserverhasgoneaway  【解决办法】1、找到MySQL安装目录下的my.ini文件,修改max_allo......
  • 基于django框架开发在线书店推荐系统 python实现个性化网上书店/图书购物商城推荐网站
    基于django框架开发在线书店推荐系统python实现个性化网上书店/图书购物商城推荐网站爬虫、兴趣标签、排行榜标签推荐、热点推荐、协同过滤算法推荐大数据深度学习机器学习人工智能WebBookShopRecPy一、项目简介1、开发工具和使用技术Pycharm、Python3及以上版本,D......
  • 基于django框架开发在线美食推荐系统 python实现个性化美食食谱推荐系统 爬虫、排行榜
    基于django框架开发在线美食推荐系统python实现个性化美食食谱推荐系统爬虫、排行榜、可视化数据分析基于流行度热点推荐、基于用户/物品协同过滤算法推荐、平均加权混合推荐大数据深度学习机器学习OnlineFoodRecommendPy一、项目简介1、开发工具和使用技术Pycharm......
  • PbootCMS网站后台管理系统登录界面描述/LOGO/背景图/介绍修改
    1.修改登录界面描述位置:登录页面通常会有一个简短的系统或公司介绍。修改方法:找到登录页面的模板文件,通常位于 /template/admin/login.html。在该文件中找到描述文本的部分,通常是 <p> 标签内的内容。直接修改该段落的内容即可。2.修改LOGO位置:LOGO通常显......
  • 知识点:树中结点的度以及叶子结点(度为0的结点)的计算
    知识点:这道题目考察的是树的基本概念和性质,特别是关于树中结点的度以及叶子结点(度为0的结点)的计算。知识点相关内容:树(Tree):树是一种特殊的图,它是一个无向图,由结点(或称为顶点)和边组成,满足以下条件:任意两个结点之间有且仅有一条路径。树中的结点可以分为根结点、分支结点和叶......