golang基础笔记(6):结构体
Go语言中没有“类”的概念,也不支持“类”的继承等面向对象的概念,它通过结构体的内嵌再配合接口比一般面向对象具有更高的扩展性和灵活性。
结构体
Go语言中的结构体是一种自定义数据类型,它可以用来封装多个基本数据类型。结构体的英文名称叫struct,与C语言一样,也是通过struct来定义结构体。
Go语言通过结构体来实现面向对象。
定义
使用type和struct关键字来定义结构体,具体代码格式如下:
12345type 类型名 struct { 字段名 字段类型 字段名 字段类型 …}
举个例子
12345type person struct { name string city string age int8}
跟以往一样,相同类型字段名可以写在同一行
1234type person struct { name, city string age int8}
语言内置的基础数据类型是用来描述一个值的,而结构体是用来描述一组值的。比如一个人有名字、年龄和居住城市等,本质上是一种聚合型的数据类型。
实例化
当 ...
golang基础笔记(5):函数
函数
Go语言中支持函数、匿名函数和闭包。
函数在Go语言中可以作为变量、参数、返回值等等。
定义
123func 函数名([参数列表]) [返回值列表] { 函数体}
返回值
一个函数可以有0个或者多个返回值
123456789101112131415//简单的函数func sum(a, b int) int{ return a+b}//在返回值列表定义返回变量func sum(a, b int) (c int){ c = a+b return //这样做,在return处就只需要一个return即可}//多返回值,求商与余数func divi(a, b int) (int, int){ return a/b, a%b}
在调用有返回值的函数时,我们可以选择不接受它的返回值。
当我们一个函数返回值为silce时,nil可以看做是一个silce,直接返回nil即可,不需要返回一个[]int{}
123func nilFunc() []int{ re ...
golang基础笔记(4):Map
map
map是Go语言中提供的映射关系的容器类数据结构,其内部使用散列表(hash)实现。
map是一种无序的基于key-value的数据结构,Go语言中的map是引用类型,必须初始化才能使用。
构建map
var
1var m map[KeyType]ValueType
make()
1m := make(map[KeyType]ValueType,[cap])
cap为可选参数
使用字面值
map支持在声明的时候填充元素
1234m := map[KeyType]ValueType{ "Key1":value1, "Key2":value2,}
大括号内也可以为空
1m := map[string]int{}
通过使用空接口,可以在同一个map中存储不同类型的value
1234m := map[string]interface{}{ "name": "张三", //string "age" ...
golang基础笔记(3):数组、切片
数组
与大多数语言中的数组都类似,Go语言的数组也是从声明时就确定,使用时可以修改数组成员,但是数组大小不可变化。但是实际上,Go中的数组并不常用,而常用为切片。
声明
1var 数组变量名 [元素数量]T
初始化
基础写法
123var testArray [3]int //数组会初始化为int类型的零值var numArray = [3]int{1, 2} //使用指定的初始值完成初始化var cityArray = [3]string{"北京", "上海", "深圳"} //使用指定的初始值完成初始化
编译器判断长度
12var numArray = [...]int{1, 2}var cityArray = [...]string{"北京", "上海", "深圳"}
指定索引值
1r := [...] ...
golang基础笔记(2):程序结构
Hello World!
从每个语言学习的开始讲起:
1234567package mainimport "fmt"func main() { fmt.Println("hello golang")}
包
每个Go程序都是由包构成,每个项目都是从main包作为入口的。
导入包
使用import语句导入包,在Hello World程序中,我们导入了fmt包
1import "fmt"
常常的,我们在写程序时都会遇到需要导入多个包的情况,在Golang中,我们有两种形式导入多个包:
第一种是多个import
12import "fmt"import "math"
我们还可以选择将多个包用括号括起来在一个import中
1234import ( "fmt" "math")
值得注意的一点:import语句只对当前文件有效
导出名
在Java中,我们用public和private关键词来标记一个方法是包外是否可用的。
而在Go中,使用 ...
golang基础笔记(1):环境配置
Golang安装
Go语言支持大部分常见系统与处理器架构:
Linux
MacOS
Windows
…
我们可以前往Golang的官方网站下载对应安装包或者二进制包
本文以Linux平台作为演示,类Unix使用二进制包安装的流程大致相同
步骤大致如下
下载二进制包 go1.x.x.linux-amd64.tar.gz
进入保存的文件夹,将二进制包解压到/usr/local目录下:
1tar -C /usr/local -xzf go1.x.x.linux-amd64.tar.gz
将/usr/local/go/bin目录添加到PATH环境变量下:
直接使用命令只能临时添加,因此我们选用编辑终端的配置文件,首先我们需要确定自己的终端配置文件是哪个
我是zsh终端,因此我们需要修改~/.zshrc,将命令添加到该文件末尾(最好做上注释)。
12#golangexport PATH=$PATH:/usr/local/go/bin
测试
安装完成!
Python基础笔记(3):基本数据类型
标准数据类型
在上个笔记中,我们提及了Python中的六个标准的数据类型:
Number(数字)
String(字符串)
List(列表)
Tuple(元组)
Set(集合)
Dictionary(字典)
Number 数字
Python3 支持 int、float、bool、complex(复数)。
在Python 3里,只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。
在 Python3.6+ 中书写很大的数时,可以在任意位置加入下划线,使数字更清晰易读,但是请注意Python3中的数字是没有限制大小的
1universe_age= 14_000_000_000
bool 是 int 的子类,True 和 False 可以和数字相加, True==1、False==0 会返回True,但可以通过is来判断类型:
1234>>> 1 is TrueFalse>>> 0 is FalseFalse
而其他三种则为三种不同的数值类型
三种数
整型( int ) : 通常被称为整型或整数
浮点型( float ) : ...
Python基础笔记(2):基础语法
标识符
Python中的标识符规则与大多数语言都类似:
第一个字符必须是字母表中字母或下划线 _ 。
标识符的其他的部分由字母、数字和下划线组成。
标识符对大小写敏感。
在Python3中非ASCII标识符也受允许,例如中文
与其他语言不同的是,Python中标识符前后的下划线是具有特殊含义的,起着Java等语言中public等关键词的作用:
单下划线开头 _var
说明是仅供内部使用的方法变量,举个例子
首先创建一个test.py模块,包含了一个带下划线和不带下划线的方法:
1234567def func(): print("hello world")def _func(): print("NO Hello")
接着我们去引用这个模块,并分别调用方法:
123from test import *func()
123from test import *_func()
这时候它告诉我们 _func 没有定义,它只能被模块内部使用。
简单输入输出
使用input()与print()实现在命令行窗口简单输入输出:
12str ...
Python基础笔记(1):简介、环境部署
Python简介
Python是一门解释性语言,简单易学,上手容易。
因此作为一门胶水语言,在许多非计算机专业都有广泛学习。为了可以编写一些简单的脚本,学习Python还是有一定的必要性的。
本笔记基本内容为根据
Python3
菜鸟教程 Python3 教程 | 菜鸟教程 (runoob.com)
NX的博客 Python | NX の 博客 (nickxu.top)
所编写。
环境部署
前往官网Python.org下载最新的Python安装包,按流程安装。
在代码编辑器上有两个推荐,一个是VSCode,一个是Pycharm:
VSCode在拓展应用商店安装Python插件与Code Runner插件即可
Pycharm的配置与安装不再赘述,向导非常详细,遵循向导即可
当然,作为一个解释型语言,我们也可以在命令行中进行交互式的编程,但是这种方式并不是很常用。
Rust基础笔记(1):基础结构
序
此笔记为在学习Rust圣经《The Rust Programming Language》时记录的笔记,为基础学习
中文版书籍:Rust 程序设计语言 - Rust 程序设计语言 简体中文版 (kaisery.github.io)
安装过程不再赘述,可直接参考Rust官方网站的安装过程
官方网站地址:Rust Programming Language (rust-lang.org)
本人开发环境为:
ManjaroWSL2
Clion
学习Rust纯属为个人一时兴起,本笔记随时弃坑。
一个简单的Rust程序
1234567891011use std::io;fn main() { println!("Guess the number!"); println!("Please input your guess:"); let mut guess = String::new(); io::stdin() .read_line(&mut guess) .expect(" ...