首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Go语言基础数据类型

前言

学无止境,无止境学。坚持每天学点编程知识,坚持每天写点小文章,坚持每天进步一点点。大家好,我是张大鹏,喜欢学习和分享,希望能够通过此公众号,将自己学到的东西分享给大家,和大家一起交流,一起成长,一起进步。

乾坤未定,你我皆是黑马。大鹏一日同风起,扶摇直上九万里。宝剑锋从磨砺出,梅花香自苦寒来。不积跬步,无以至千里,不积小流无以成江海。

如果有多余的时间,就坚持学习吧,小时候学习改变命运,长大了学习丰富内涵,老了学习带来宁静。活到老,学到老,我能行!

概述

课程说明

《Go语言零基础入门班》收费说明:

本篇文章是《Go语言零基础入门班》的第2篇文章,前面还有:

《Go语言快速入门》

数字类型

Go语言数字类型概述

Go语言主要提供了如下数字类型:

整数

浮点数

复数

其中复数的使用场景较少,在一般的开发中几乎不会被用到,可以只做了解。

整数

Go语言分别支持有符号和无符号两种整数类型,提供了四种大小的整数:

int8、uint8

int16、uint16

int32、uint32

int64、uint64

另外还有一种便捷的数字类型,int和uint,这种数据类型会根据当前操作系统的不同而自动改变大小,是一种推荐的整数类型。

示例:整数的基本用法

package main

import "fmt"

func main() {

// ● int8、uint8

var num1 int8 = 1

var num2 uint8 = 1

fmt.Printf("%T: %v\n", num1, num1)

fmt.Printf("%T: %v\n", num2, num2)

// ● int16、uint16

var num3 int16 = 1

var num4 uint16 = 1

fmt.Printf("%T: %v\n", num3, num3)

fmt.Printf("%T: %v\n", num4, num4)

// ● int32、uint32

var num5 int32 = 1

var num6 uint32 = 1

fmt.Printf("%T: %v\n", num5, num5)

fmt.Printf("%T: %v\n", num6, num6)

// ● int64、uint64

var num7 int64 = 1

var num8 uint64 = 1

fmt.Printf("%T: %v\n", num7, num7)

fmt.Printf("%T: %v\n", num8, num8)

}

浮点数

Go语言支持float32和float64两种类型的浮点数,float32类型保留6位小数精度,floa

64保留15位小数精度。

示例代码:

package main

import "fmt"

func main() {

var num1 float32 = 1

var num2 float64 = 1

fmt.Printf("%T: %v\n", num1, num1)

fmt.Printf("%T: %v\n", num2, num2)

}

复数

Go语言支持复数,不过这种数据类型在一般的开发中几乎不会被用到,了解即可。

示例代码:

package main

import "fmt"

func main() {

var num1 = 22 + 2i

var num2 = complex(5, 7)

fmt.Println(num1)

fmt.Println(num2)

}

循环

for循环

for循环的基本语法:

for i:=0;i

示例代码:求1-100所有整数的和

package main

import "fmt"

func main() {

sumNum := 0

for i := 0; i < 101; i++ {

sumNum += i

}

fmt.Println(sumNum)

}

while循环

while循环的基本语法:

while 循环条件

示例代码:求1-100所有整数的和

package main

import "fmt"

func main() {

sumNum := 0

i := 0

for i < 101 {

sumNum += i

i++

}

fmt.Println(sumNum)

}

数组

一维数组

定义一维数组的语法是:

arr := [元素个数]元素类型

示例:定义和遍历一维数组

package main

import "fmt"

func main() {

arr := [3]int

for _, v := range arr {

fmt.Println(v)

}

}

二维数组

定义二维数组的语法是:

arr := [外层元素个数][内层元素个数]元素类型

示例:定义和遍历二维数组

package main

import "fmt"

func main() {

arr := [3][3]int{

,

,

,

}

for _, v := range arr {

for _, vv := range v {

fmt.Print(vv, "\t")

}

fmt.Print("\n")

}

}

切片

切片的定义

切片是基于数组的一种动态数据类型,能够动态的修改其长度,非常的灵活。

示例:创建一维和二维的切片

package main

import "fmt"

func main() {

// 一维切片

arr1 := []int

for _, v := range arr1 {

fmt.Println(v)

}

// 二维切片

arr := [][]int{

,

,

,

}

for _, v := range arr {

for _, vv := range v {

fmt.Print(vv, "\t")

}

fmt.Print("\n")

}

}

切片增删改查

切片是Go语言中非常常用的一种数据结构,掌握其常用的增删改查方法非常有必要。

示例:切片的增删改查

package main

import "fmt"

func main() {

// 定义切片

var arr []string

// 添加

arr = append(arr, "a")

arr = append(arr, "b", "c")

fmt.Println(arr)

// 删除

index := 1

arr = append(arr[:index], arr[index+1:]...)

fmt.Println(arr)

// 修改

arr[index] = "cc"

fmt.Println(arr)

// 查询

fmt.Println(arr[0])

}

切片的复制

示例代码1:使用append方法

package main

import "fmt"

func main() {

arr := []string{"a", "b", "C"}

// 复制

var arr1 []string

arr1 = append(arr1, arr...)

fmt.Println(arr1)

fmt.Println(arr)

}

示例代码2:使用copy方法

package main

import "fmt"

func main() {

arr := []string{"a", "b", "C"}

// 复制

var arr1 = make([]string, len(arr))

copy(arr1, arr)

fmt.Println(arr1)

fmt.Println(arr)

}

切片的排序

示例1:整数切片的排序

package main

import (

"fmt"

"sort"

)

func main() {

arr := []int

fmt.Println(arr)

// 排序

sort.Ints(arr)

fmt.Println(arr)

}

示例代码2:自定义类型排序

package main

import (

"fmt"

"sort"

)

type Person struct {

Name string

Age int

}

func main() {

arr := []Person{

{"张三", 22},

{"李四", 21},

{"王五", 23},

}

fmt.Println(arr)

// 排序:根据年龄降序

sort.Slice(arr, func(i, j int) bool {

return arr[i].Age > arr[j].Age

})

fmt.Println(arr)

}

映射

映射的增删改查

映射也被称作map或字典,存储的是键值对类型的关系。

示例代码:映射的增删改查

package main

import "fmt"

func main() {

// 创建

m := make(map[string]int)

// 新增

m["a"] = 1

m["b"] = 2

fmt.Println(m)

// 删除

delete(m, "a")

fmt.Println(m)

// 修改

m["b"] = 11

fmt.Println(m)

// 查询

fmt.Println(m["b"])

}

常量

常量的基本定义

示例:定义常量

package main

import "fmt"

func main() {

const PI = 3.14

fmt.Println(PI)

}

常量的自增

示例:使用iota让常量自增

package main

import "fmt"

const (

a = iota

b

c

)

func main() {

fmt.Println(a, b, c)

}

指针

指针的基本用法

示例:指针的获取和使用

package main

import "fmt"

func main() {

var a = 33

// 获取指针

pA := &a

// 通过指针修的值

*pA = 34

// 查看指针的值

fmt.Println(*pA)

}

日期和时间

基本用法

示例:时间的基本用法

package main

import (

"fmt"

"time"

)

func main() {

// 当前时间

now := time.Now()

// 时间戳

fmt.Println(now.Unix())

// 格式化

fmt.Println(now.Format("2006-01-02 15:04:05"))

// 获取年月日

fmt.Println(now.Year(), now.Month(), now.Day(),

now.Hour(), now.Minute(), now.Second())

}

计算时间差

示例代码:计算时间差

package main

import (

"fmt"

"time"

)

func main() {

// 当前时间

now := time.Now()

// 休眠

time.Sleep(time.Second)

// 计算时间差

delta := time.Now().Sub(now)

fmt.Printf("delta: %v\n", delta)

}

总结

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230129A000BW00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券