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
}
目录
相关文章
|
26天前
|
搜索推荐 C语言
指针与数组
指针与数组
49 9
|
15天前
|
Go
Golang语言高级数据类型之指针篇
这篇文章详细讲解了Golang语言中的指针概念、指针地址和类型、定义指针变量、指针的细节操作、指针传值,以及内置函数new和make的用法和它们之间的区别。
14 0
|
18天前
|
存储 Go 数据处理
C 数组和 Go 切片的区别详解
【8月更文挑战第31天】
25 0
|
18天前
|
存储 安全 Go
深入理解 Go 语言中的指针类型
【8月更文挑战第31天】
8 0
|
18天前
|
存储 Go 开发者
掌握Go语言中的指针
【8月更文挑战第31天】
7 0
|
21天前
|
人工智能 编译器 Go
Go从入门到放弃之数组、切片
Go从入门到放弃之数组、切片
|
26天前
|
存储 C语言
指针与结构体
指针与结构体
24 0
|
26天前
|
存储 程序员 C语言
指针的高级应用:指针数组、数组指针、函数指针等。
指针的高级应用:指针数组、数组指针、函数指针等。
60 0
|
9天前
|
程序员 Go PHP
为什么大部分的 PHP 程序员转不了 Go 语言?
【9月更文挑战第8天】大部分 PHP 程序员难以转向 Go 语言,主要因为:一、编程习惯与思维方式差异,如语法风格和编程范式;二、学习成本高,需掌握新知识体系且面临项目压力;三、职业发展考量,现有技能价值及市场需求不确定性。学习新语言虽有挑战,但对拓宽职业道路至关重要。
38 10
Go基础(复杂类型):指针
Go语言指针 Go 具有指针。 指针保存了变量的内存地址。 类型 *T 是指向类型 T 的值的指针。其零值是 nil。
1018 0