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 }