Go语言数组,指针,结构体

简介: 声明Go 语言数组声明需要指定元素类型及元素个数,语法格式如下:


1.数组


声明


Go 语言数组声明需要指定元素类型及元素个数,语法格式如下:


var variable_name [SIZE] variable_type


以上为一维数组的定义方式。例如以下定义了数组 balance 长度为 10 类型为 float32:


var balance [10] float32


初始化数组


balance := [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0}


如果数组长度不确定,可以使用 ... 代替数组的长度,编译器会根据元素个数自行推断数组的长度:


balance := [...]float32{1000.0, 2.0, 3.4, 7.0, 50.0}


如果设置了数组的长度,我们还可以通过指定下标来初始化元素:


//  将索引为 1 和 3 的元素初始化
balance := [5]float32{1:2.0,3:7.0}


访问数组元素


package main
import "fmt"
func main() {
  var n [10]int
  var i, j int
  for i = 0; i < 10; i++ {
    n[i] = i + 521
  }
  for j = 0; j < 10; j++ {
    fmt.Printf("%d\n", n[j])
  }
}
-------------------------
输出:
521
522
523
524
525
526
527
528
529
530


2.指针


变量在内存中地址


package main
import "fmt"
func main() {
  var a int = 521
  fmt.Println(&a)  // 0xc000018098
}


什么是指针


一个指针变量指向了一个值的内存地址。

类似于变量和常量,在使用指针前你需要声明指针。指针声明格式如下:


var var_name *var-type


var-type 为指针类型,var_name 为指针变量名,* 号用于指定变量是作为一个指针。以下是有效的指针声明:


var ip *int        /* 指向整型*/
var fp *float32    /* 指向浮点型 */


使用指针


package main
import "fmt"
func main() {
  var a int = 521
  var ip *int
  ip = &a
  fmt.Println(a, ip, *ip)  // 521 0xc000018098 521
}


空指针


当一个指针被定义后没有分配到任何变量时,它的值为 nil。

nil 指针也称为空指针。

nil在概念上和其它语言的null、None、nil、NULL一样,都指代零值或空值。

一个指针变量通常缩写为 ptr。

空指针判断:🙌


if(ptr != nil)     /* ptr 不是空指针 */
if(ptr == nil)    /* ptr 是空指针 */


3.结构体


结构体定义需要使用 type 和 struct 语句。struct 语句定义一个新的数据类型,结构体中有一个或多个成员。type 语句设定了结构体的名称。结构体的格式如下:


package main
import "fmt"
type Books struct {
  title   string
  author  string
  subject string
  id      int
}
func main() {
  var Book1 Books /* 声明 Book1 为 Books 类型 */
  Book1.title = "Go语言速通"
  Book1.author = "dahe"
  Book1.subject = "Go"
  Book1.id = 1
  fmt.Println(Book1.title, Book1.author, Book1.subject, Book1.id)  // Go语言速通 dahe Go 1
}
目录
相关文章
|
5天前
|
存储 监控 算法
员工上网行为监控中的Go语言算法:布隆过滤器的应用
在信息化高速发展的时代,企业上网行为监管至关重要。布隆过滤器作为一种高效、节省空间的概率性数据结构,适用于大规模URL查询与匹配,是实现精准上网行为管理的理想选择。本文探讨了布隆过滤器的原理及其优缺点,并展示了如何使用Go语言实现该算法,以提升企业网络管理效率和安全性。尽管存在误报等局限性,但合理配置下,布隆过滤器为企业提供了经济有效的解决方案。
33 8
员工上网行为监控中的Go语言算法:布隆过滤器的应用
|
25天前
|
存储 Go 索引
go语言中数组和切片
go语言中数组和切片
37 7
|
25天前
|
Go 开发工具
百炼-千问模型通过openai接口构建assistant 等 go语言
由于阿里百炼平台通义千问大模型没有完善的go语言兼容openapi示例,并且官方答复assistant是不兼容openapi sdk的。 实际使用中发现是能够支持的,所以自己写了一个demo test示例,给大家做一个参考。
|
25天前
|
程序员 Go
go语言中结构体(Struct)
go语言中结构体(Struct)
99 71
|
24天前
|
存储 Go 索引
go语言中的数组(Array)
go语言中的数组(Array)
103 67
|
25天前
|
存储 Go
go语言中映射
go语言中映射
36 11
|
3天前
|
监控 算法 安全
解锁企业计算机监控的关键:基于 Go 语言的精准洞察算法
企业计算机监控在数字化浪潮下至关重要,旨在保障信息资产安全与高效运营。利用Go语言的并发编程和系统交互能力,通过进程监控、网络行为分析及应用程序使用记录等手段,实时掌握计算机运行状态。具体实现包括获取进程信息、解析网络数据包、记录应用使用时长等,确保企业信息安全合规,提升工作效率。本文转载自:[VIPShare](https://www.vipshare.com)。
13 0
|
17天前
|
Go 数据安全/隐私保护 UED
优化Go语言中的网络连接:设置代理超时参数
优化Go语言中的网络连接:设置代理超时参数
Go基础(复杂类型):指针
Go语言指针 Go 具有指针。 指针保存了变量的内存地址。 类型 *T 是指向类型 T 的值的指针。其零值是 nil。
1029 0
|
27天前
|
Go 索引
go语言for遍历数组或切片
go语言for遍历数组或切片
94 62