go自我理解数据类型
布尔类型
布尔类型 bool true false
数字类型
数字类型
整型 int
int8 int16 int32 int64
无符号整型uint unsigned int
uint8 uint16 uint32 uint64
浮点型 float
float32 float 64
复合型complex => float32*float32/float64*float64 同位数实数和虚数组成
complex64 complex128
其他数字类型
byte 类似 uint8
rune 类似 int32
uint 32 或 64 位
int 与 uint 一样大小
5uintptr无符号整型,无符号整型,用于存放一个指针
字符串类型
字符串 string
var str string //声明一个字符串
派生类型
指针
指针 一个指针变量指向了一个值的内存地址
声明方法 在类型前面加上 *
访问指针变量中指向地址的值 变量前面+取地址符& &变量
空指针 当一个指针被定义后没有分配到任何变量时,它的值为 nil。
例子:
var a int= 20 /* 声明实际变量 */
var ip *int /* 声明指针变量 */
ip = &a /* 指针变量的存储地址 */
/*空指针*/
var ptr *int
fmt.Printf(\\\"ptr 的值为 : %x\\\\n\\\", ptr )
数组
数组 相当于固定长度的php 有序数组
声明
var variable_name [SIZE] variable_type
var 数组名 [SIZE] 数组内变量类型
var arr [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
结构体
结构体 类似php的预先设置好属性的对象
定义 结构体定义需要使用 type 和 struct 语句
type struct_variable_type struct {
member definition;
member definition;
...
member definition;
}
声明结构体 var 结构体成员名 结构体类型
例子:
type Books struct {
title string
author string
subject string
book_id int
}
func mian(){
var book1 Books
}
访问: 要访问结构体成员,需要使用点号 (.) 操作符
struct_variable_name.definition
例子
package main
import \\\"fmt\\\"
type Books struct {
title string
author string
subject string
book_id int
}
func main() {
var Book1 Books /* 声明 Book1 为 Books 类型 */
var Book2 Books /* 声明 Book2 为 Books 类型 */
/* book 1 描述 */
Book1.title = \\\"Go 语言\\\"
Book1.author = \\\"www.runoob.com\\\"
Book1.subject = \\\"Go 语言教程\\\"
Book1.book_id = 6495407
/* book 2 描述 */
Book2.title = \\\"Python 教程\\\"
Book2.author = \\\"www.runoob.com\\\"
Book2.subject = \\\"Python 语言教程\\\"
Book2.book_id = 6495700
/* 打印 Book1 信息 */
fmt.Printf( \\\"Book 1 title : %s\\\\n\\\", Book1.title)
fmt.Printf( \\\"Book 1 author : %s\\\\n\\\", Book1.author)
fmt.Printf( \\\"Book 1 subject : %s\\\\n\\\", Book1.subject)
fmt.Printf( \\\"Book 1 book_id : %d\\\\n\\\", Book1.book_id)
/* 打印 Book2 信息 */
fmt.Printf( \\\"Book 2 title : %s\\\\n\\\", Book2.title)
fmt.Printf( \\\"Book 2 author : %s\\\\n\\\", Book2.author)
fmt.Printf( \\\"Book 2 subject : %s\\\\n\\\", Book2.subject)
fmt.Printf( \\\"Book 2 book_id : %d\\\\n\\\", Book2.book_id)
}
go语言函数
Go 语言函数 没啥好解释都长这样就前缀 function=>func
func function_name( [parameter list] ) [return_types] {
函数体
}
func 函数名 (参数列表) 返回类型{
函数体
}
Go 语言切片(Slice)
Go 语言切片(Slice)
不确定长度的数组就是切片
声明
var identifier []type
var 变量名 []类型
赋值 var 变量名 = []类型{值,值}
s :=[] int {1,2,3 }
切片不需要说明长度,或使用make()函数来创建切片:
var slice1 []type = make([]type, len)
简写 slice1 := make([]type, len)
也可以指定容量,其中capacity为可选参数
make([]T, length, capacity)
Go 语言接口
Go 语言接口
都一样interface 声明就完事
/* 定义接口 */
type interface_name interface {
method_name1 [return_type]
method_name2 [return_type]
method_name3 [return_type]
...
method_namen [return_type]
}
/* 定义结构体 */
type struct_name struct {
/* variables */
}
/* 实现接口方法 */
func (struct_name_variable struct_name) method_name1() [return_type] {
/* 方法实现 */
}
...
func (struct_name_variable struct_name) method_namen() [return_type] {
/* 方法实现*/
}
Go 语言Map(集合)
Go 语言Map(集合) 相当于 php的关联数组
key 类似于索引,指向数据的值。
定义 Map
可以使用内建函数 make 也可以使用 map 关键字来定义 Map:
/* 声明变量,默认 map 是 nil */
var map_variable map[key_data_type]value_data_type
/* 使用 make 函数 */
map_variable := make(map[key_data_type]value_data_type)
例子
var countryCapitalMap map[string]string
/* 创建集合 */
countryCapitalMap = make(map[string]string)
/* map 插入 key-value 对,各个国家对应的首都 */
countryCapitalMap[\\\"France\\\"] = \\\"Paris\\\"
countryCapitalMap[\\\"Italy\\\"] = \\\"Rome\\\"
countryCapitalMap[\\\"Japan\\\"] = \\\"Tokyo\\\"
countryCapitalMap[\\\"India\\\"] = \\\"New Delhi\\\"
遍历
/* 使用 key 输出 map 值 */
for country := range countryCapitalMap {
fmt.Println(\\\"Capital of\\\",country,\\\"is\\\",countryCapitalMap[country])
}
/* 查看元素在集合中是否存在 */
captial, ok := countryCapitalMap[\\\"United States\\\"]
/* 如果 ok 是 true, 则存在,否则不存在 */
if(ok){
fmt.Println(\\\"Capital of United States is\\\", captial)
}else {
fmt.Println(\\\"Capital of United States is not present\\\")
}
delete() 函数
delete() 函数用于删除集合的元素, 参数为 map 和其对应的 key
delete(map,key);
版权声明:
作者:超级管理员
链接:
https://blog.apecloud.ltd/article/detail.html?id=39
来源:猿码云个人技术站
文章版权归作者所有,未经允许请勿转载。
THE END
二维码
打赏
共有0条评论