Go基础知识点(十) | 青训营笔记

52 阅读1分钟

这是我参与「第五届青训营 」笔记创作活动的第12天.

go指向数组的指针:

定义语法:

var pa [max]*int 表示数组里面的元素的类型是指针类型

import "fmt"

func main() {
   a := []int{1, 2, 3}
   var pa [3]*int
   fmt.Println("pa:", pa)
   for i := 0; i < len(a); i++ {
      pa[i] = &a[i]
   }
   fmt.Println("pa:", pa)
   for i := 0; i < len(a); i++ {
      fmt.Printf("%v ", *pa[i])
   }
}
image.png

go语言类型定义和类型别名的区别:

1.类型定义相当于定义了一个全新的类型,与之前的类型不同,但是类型别名并没有定义一个新的类型,而是使用一个别名来替换之前的类型.

2.类型别名只会在代码中存在,在编译完成之后并不会存在该别名.

3.因为类型别名和原来的类型是一致的,所以原来类型所拥有的方法,类型别名中也可以调用,但是如果是重新定义的一个类型,那么不可以调用之前的任何方法.

import (
   "fmt"
)

func main() {
   type myInt int
   var i myInt
   i = 100
   fmt.Printf("i:%T %v\n", i, i)

   type my = int
   var j my
   j = 100
   fmt.Printf("j:%T %v", j, j)
}
image.png

go结构体:

go语言没有面向对象的概念,但是可以使用结构体来实现,面向对象的一些特性:继承,组合等;

go语言结构体的定义:

type type_name_struct struct{

   member definition

   member definition

   ...
   member definition

}

type:结构体定义关键字

type_name_struct :结构体类型名

struct:结构体定义关键字

member definition: 成员定义

import "fmt"

type Person struct {
   id    int
   name  string
   age   int
   email string
}

func main() {
   var pe Person
   fmt.Printf("pe:%v\n", pe)

   pe.id = 1
   pe.name = "tom"
   pe.age = 12
   pe.email = "tom@gemail.com"
   fmt.Printf("pe:%v\n", pe)

   
}

image.png 匿名结构体定义:

//匿名结构体

var tom struct {
   id   int
   name string
   age  int
}
tom.id = 1
tom.name = "tom"
tom.age = 12
fmt.Printf("tom:%v\n", tom)

image.png

加油!

明天也要继续加油~