go语言数据类型

简介: go语言数据类型

数据类型有哪些?怎么使用?(在这里仅仅做简单介绍,后来会进行详细介绍)


(一)基础类型


  • 布尔


有两种值bool或者true


  • 数字类型


整型、浮点型


  • 字符串类型


字符串是一串固定长度的字符拼接起来的字符序列,go语言字符串是由单个字节连接起来的go语言字符串的字节使用utf-8编码


(二)派生类型


(1)指针类型


var p int=10
var p1 *int
var p2 **int
p1=&p
p2=&p1
//以下打印均为10
fmt.Println(p,*p1,**p2)


(2)数组类型


  //声明数组的两种方式
  //先声明后初始化
  var my2arr [3][4]int
  //直接初始化
  var myarray1 = [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}


(3)结构体类型


type man struct {
  id   string
  name string
  age  int
}


(4)Channel类型(类似于队列,先进先出)


//这里声明了一个int型的通道
  var a chan int


(5)函数类型(简单声明一个函数的方法)


//返回两个值中一个较大的值,相等则抛出异常
 func maxs(a, b int) (error,int) {
  if a > b {
    return nil,a
  } else {
    return nil,b
  }
  return errors.New("相等"),0
}


(6)切片类型(可以随意进行切割,算头不算尾)


  atemp := [11]int{1, 2, 3, 4, 5, 6, 9, 8, 7, 0}
  a2 := atemp[:6]


(7)接口类型(十颗星)


//接口的定义
type Phone interface {
  speak()
  read()
}
//类型的实现
type IPhone struct {
}
//接口功能的实现
func (a IPhone) speak() {
  fmt.Println("我叫sir,您好!")
}


(8)Map类型


 Map就是集合,有键有值
  // 直接进行初始化
  var name = map[string]string{"func": "123", "name": "66"}
  fmt.Println(name)
  // 使用make进行初始化
  var name1 map[string]string
  name1 = make(map[string]string)


(三)变量的声明注意点


(1)变量声明的一般形式是使用var关键字,支持一次声明多个变量


(2)如果变量只进行了声明,没有对他进行赋值,那么int变量的默认值为0


      bool类型变量默认为false
      str类型变量是“”(空字符串)
      指针、数组、函数默认值为nil


(3)根据所给的值进行自我判断(值是什么类型,变量就是什么类型)


(4)声明赋值简写 a:=1(这种方式a的类型将与值的类型相同,并且这种声明方式不可以用于全局变量的声明)


      相当于var a int
        a=1
      如果使用var a int 后再使用a:=1就会报错


(5)因式分解式的变量声明(一般用于全局变量声明)


      var(
        变量1 类型1
        变量2 类型2
      )


(6)go语言中进行局部变量声明必须使用,不使用的话会进行报错,全局变量没事


(7)空白字符_(超级重要)


      空白字符是一个只写变量,只能对其进行写入没办法将里面的数据进行读出
      可以用于接收多返回值函数的某些特定位置的返回值
      例如:
      _=10
      一般用来忽略多余返回值,或用于通道


(8)交换两个数据可以这样写


a:=10
b:=100
  // 交换a,b两个值
  a, b = b, a
• 1
• 2
• 3
• 4


如果看完本博客对go语言变量有了一定的认识,则达到了效果,后续还会进行每一种变量的详细介绍。


a6bc70bf19924ccfb335992ebcdf2832.png


Go GO GO,加油!


相关文章
|
3月前
|
存储 安全 Java
【Golang】(4)Go里面的指针如何?函数与方法怎么不一样?带你了解Go不同于其他高级语言的语法
结构体可以存储一组不同类型的数据,是一种符合类型。Go抛弃了类与继承,同时也抛弃了构造方法,刻意弱化了面向对象的功能,Go并非是一个传统OOP的语言,但是Go依旧有着OOP的影子,通过结构体和方法也可以模拟出一个类。
243 1
|
11月前
|
编译器 Go
揭秘 Go 语言中空结构体的强大用法
Go 语言中的空结构体 `struct{}` 不包含任何字段,不占用内存空间。它在实际编程中有多种典型用法:1) 结合 map 实现集合(set)类型;2) 与 channel 搭配用于信号通知;3) 申请超大容量的 Slice 和 Array 以节省内存;4) 作为接口实现时明确表示不关注值。此外,需要注意的是,空结构体作为字段时可能会因内存对齐原因占用额外空间。建议将空结构体放在外层结构体的第一个字段以优化内存使用。
|
11月前
|
运维 监控 算法
监控局域网其他电脑:Go 语言迪杰斯特拉算法的高效应用
在信息化时代,监控局域网成为网络管理与安全防护的关键需求。本文探讨了迪杰斯特拉(Dijkstra)算法在监控局域网中的应用,通过计算最短路径优化数据传输和故障检测。文中提供了使用Go语言实现的代码例程,展示了如何高效地进行网络监控,确保局域网的稳定运行和数据安全。迪杰斯特拉算法能减少传输延迟和带宽消耗,及时发现并处理网络故障,适用于复杂网络环境下的管理和维护。
|
5月前
|
Cloud Native 安全 Java
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
331 1
|
5月前
|
Cloud Native Go API
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
423 0
|
5月前
|
Cloud Native Java Go
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
286 0
|
5月前
|
Cloud Native Java 中间件
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
265 0
|
5月前
|
Cloud Native Java Go
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
354 0
|
5月前
|
数据采集 Go API
Go语言实战案例:多协程并发下载网页内容
本文是《Go语言100个实战案例 · 网络与并发篇》第6篇,讲解如何使用 Goroutine 和 Channel 实现多协程并发抓取网页内容,提升网络请求效率。通过实战掌握高并发编程技巧,构建爬虫、内容聚合器等工具,涵盖 WaitGroup、超时控制、错误处理等核心知识点。
|
5月前
|
数据采集 JSON Go
Go语言实战案例:实现HTTP客户端请求并解析响应
本文是 Go 网络与并发实战系列的第 2 篇,详细介绍如何使用 Go 构建 HTTP 客户端,涵盖请求发送、响应解析、错误处理、Header 与 Body 提取等流程,并通过实战代码演示如何并发请求多个 URL,适合希望掌握 Go 网络编程基础的开发者。