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
分享
二维码
打赏
/static/admin/img/weixin.jpg/static/admin/img/zfb.jpg
<<上一篇>
php使用for循环、while循环和递归写出3个函数来计算给定数列的总和
下一篇>>