Go语言学习记录
yirandezhanghao
这个作者很懒,什么都没留下…
展开
-
2021-01-18 Go语言学习日记:接口、类型断言
接口 一个自定义类型,描述了一系列方法的集合 接口不能实例化 接口的定义 接口习惯以er结尾 接口只有方法声明没有实现、没有数据字段 接口可以匿名嵌入其他接口,或嵌入到结构中 type Humaner interface { SayHi(num int) } type Student17 struct { studentId int } func (student Student17) SayHi(num int) { fmt.Printf("%+v\n", student) }原创 2021-01-18 23:11:17 · 118 阅读 · 0 评论 -
2021-01-18 Go语言学习日记:格式化输出记录、零碎杂谈
符号 意义 %d 数字 %p 地址 %v 自动匹配格式 %+v 字段名:值打印格式 %s 字符串 %c 字符型打印原创 2021-01-18 10:58:17 · 136 阅读 · 0 评论 -
2020-01-08 Go语言学习日记:面向对象编程
面向对象编程 封装:通过方法实现 继承:通过匿名字段实现 多态:通过接口实现 匿名字段组合 type Person struct { id int } type Student struct { Person //结构体匿名字段,只有结构名。默认包含了Person字段的所有成员 name string } 初始化 //顺序初始化 var student1 Student = Student{Person{1}, "H"} //自动推导类型 student2 := Student{Person{1原创 2021-01-08 11:27:34 · 130 阅读 · 0 评论 -
2020-01-07 Go语言学习日记:map、结构体
map 初始化 //初始化 var myMap map[int(键)]string(值) // myMap := map[int(键)]string(值){} //通过make创建,容量会自动扩充 myMap := make(map[int(键)]string(值), 10(指定长度)) map只有len没有cap map是无序的 赋值 myMap := map[int]string{1:"1", 2:"2"} myMap[1] = "10" myMap[3] = "3" //myMap = {1:"原创 2021-01-07 11:50:43 · 77 阅读 · 0 评论 -
2020-01-06 Go语言学习日记:复合类型(指针、数组)、随机数、切片
复合类型 指针 var a int = 10 var p *int p = &a//将a的地址赋给p *p = 666//操作的不是p的内存,而是p指针所指向的内存 保存某个变量的地址 *int 保存int的地址, **int保存 *int 的地址 默认值为nil,而不是null 操作符&去变量地址,*通过指针(地址)访问目标对象 不支持指针运算,不支持->运算符,直接用.访问目标成员 new函数 var p *int p = new(int) *p = 666 --------原创 2021-01-06 18:03:45 · 91 阅读 · 0 评论 -
2020-01-05 Go语言学习日记:defer、获取命令行参数、变量、工程管理、init()函数
defer 关键字 函数执行结束前被调用 作用域只有一排,不能使用defer {}来扩充作用域 defer定义的语句遵循先进后出的规则 它会按照代码顺序执行关键词修饰的语句(被修饰的代码中的变量状态会被保存),但不调用。直到函数执行结束后再被调用。(也就是说报错后的代码不会被调用,即使有defer修饰) 例子1: 例子2: 当然如果都被defer修饰就可以被调用。例子: 获取命令行参数 可以通过args := os.Args来获取命令行参数,类型为字符串切片 变量 局部变量和全局变量原创 2021-01-05 18:54:04 · 86 阅读 · 0 评论 -
2020-01-05 Go语言学习日记:函数
函数 func 函数名(传入参数列表/*变量名 类型*/) (返回参数列表/*变量名 类型*/) { 函数体 (需要给返回参数变量赋值) return //返回的时候就直接返回所有返回参数变量的值了 } 函数名根据约定,小写开头为私有,大写开头为公有 传入参数声明不能设置默认值 不定参数类型可以声明为变量名(一般为args) ...类型 不定参数类型可以传任意个数的参数 不定参数类型只能放在最右边 一个函数只能存在一种不定参数类型。例如以下则会报错: 不定参数的传递,可以通过args...来进行原创 2021-01-05 12:38:05 · 72 阅读 · 0 评论 -
2020-01-02 Go语言学习日记:一些函数、类型转换、类型别名、判断、循环、跳转
一些函数 len(传入参数):返回获得参数的长度 Scanf():阻塞等待用户输入, 需要格式化别忘了变量是传入地址fmt.Scanf("%d", &a)。 Scan():不用格式化直接fmt.Scan(&a)。 类型转换 只有兼容的类型才可以相互转换 希望转换的类型(待转换的类型)例如:int('A')(这里得到的是ASCII码) 类型别名 使用type关键字来给类型赋予其他的名字 type bigInt int64//给int64起一个别名为bigInt type( long原创 2021-01-02 16:33:14 · 90 阅读 · 0 评论 -
2020-01-01 Go语言学习日记:变量、常量、枚举、基础类型
变量 变量的一起声明(注意,不能使用**:=** 来进行声明): 常量 常量的一起声明(不能使用**:=**来声明,但是可以声明常量,不使用(变量是声明了必须使用)): 枚举 iota 必须是常量类型 每次从0开始计数 每次使用const声明常量后都会重新计数,如下图 声明在同一排的枚举大小都相等,如下图 可以使用下面方法来声明连续枚举数 const( i = iota j = iota k = iota ) fmt中的Println函数(最好不用) 每个间隔(字符原创 2021-01-01 17:17:25 · 116 阅读 · 2 评论 -
2020-12-29 Go语言学习日记:规则、变量、函数
规则 所声明的变量必须被使用 所导入(import)的包必须被使用 变量 := 的意思是先声明(即赋予类型)再赋值。 **_**为匿名变量,相当于一个没有名字、类型的变量,使得程序更灵活 i, j = j, i 这样的赋值是被允许的相当于 temp := i i = j j = temp 函数 函数可以返回多个值 //申明函数 func 函数名(传入参数)(返回参数){ 函数体 } //接收函数 i, j, k = 函数名(传输参数) ...原创 2020-12-29 11:20:26 · 78 阅读 · 0 评论 -
Go语言初入
环境下载与配置 在该网站上可以下载到不同平台的go语言环境: https://golang.google.cn/dl/ 下载完毕后运行,只需要对环境目录进行自定义即可,比如我是下载到D盘中的。 Go语言编辑器 我选用的是GoLand 是IDEA的一款产品,可以在该网站上进行下载: http://www.520xiazai.com/soft/GoLand.html 破解操作也有描述。 运行前编辑器的配置 需要先设置编辑器配置。 注意这个run kind需要设置为文件目录 第一次编写遇到的一些问题 可能会原创 2020-12-28 16:36:40 · 67 阅读 · 0 评论