go
文章平均质量分 50
牛帅兵
Python
Go
展开
-
5.指针使用与unsafe.Pointer
指针 变量的本质是对一块内存空间分命名, 我们也可以通过引用变量名来访问这块内存空间的值, 指针就是用来指向这些变量值所在内存地址的值 简单示例 a := 100 var ptr *int // 声明指针类型 ptr = &a // 初始化指针类型值为变量 a fmt.Println(ptr) // 0xc0000a2000 fmt.Println(*ptr) // 1 go语言之所以引入指针类型, 主要基于两点考虑 为程序员提供操作变量对应内存数据结构的能力 提高程序的性能(原创 2022-02-15 17:11:07 · 414 阅读 · 0 评论 -
4.map使用以及底层实现
map 和slice类似, map也是引用类型, 当map被复制为一个新的变量时, 他们只想同一个内部数据结构. 因此改变其中一个变量, 另一个也会收到影响. package main import "fmt" func main() { personSalary := map[string]int{ "steve": 12000, "jamie": 15000, } personSalary["mike"] = 9000 fmt.Println("Original person sal原创 2022-02-15 13:29:35 · 613 阅读 · 0 评论 -
3.切片使用以及内存优化
切片 切片是一个新的数据类型, 与数组最大的区别在于, 切片的类型字面量中只有元素的类型, 没有长度 因此切片是一个长度可变的, 同一类型的元素集合, 切片的长度可以随着元素数量的增加而增长, 但不会随着元素减少而减小 创建切片 创建切片有三种办法. 基于数组, 切片和直接创建 基于数组 array := [...]{1, 2, 3, 4, 5} s1 := array[1:4] // [2 3 4] 切片的底层引用了一个数组, 由三部分构成: 指针, 长度和容量. 指针指向数组的起始下标, 长度对应切片原创 2022-02-15 13:26:50 · 516 阅读 · 0 评论 -
2.数组的使用及其不足
数组 与python, js等弱类型动态语言不同, 在go中数组是固定长度的, 同一类型的数据集合 数组长度在声明后不可更改 数组的不足 由于数组类型变量一旦声明长度就固定了, 这意味着我们不能动态的添加元素到数组. 如果要这样做的话, 需要创建一个更大的数组, 把旧的数组元素拷贝过来, 最后在添加新元素. 如果数组的尺寸很大, 就会非常影响性能. 另外, 数组是值类型, 这意味着在作为参数传递到函数时, 传递的是该数组值的拷贝, 频繁的进行了内存拷贝, 也会影响性能 ...原创 2022-02-15 13:24:36 · 223 阅读 · 0 评论 -
1.基本数据类型之间的转化
基本数据类型 布尔类型 整型 浮点型 复数类型 字符串 字符类型 整型之间的转换 注意: 在有符号与无符号以及高位数向低位数转换时, 需要注意数字的溢出的截断 package main import ( "fmt" ) func main() { v1 := uint(18) v2 := int8(v1) v3 := uint(v2) //v4 := uint(-1) 抛出异常: constant -1 overflows uint v5 := uint(255) v6 := int8原创 2022-02-15 13:22:46 · 223 阅读 · 0 评论 -
go语言leetcode刷题
最近在学习go语言,正好也在刷leetcode,所以想到用go来写一下leecode算法。 不按照leetcode顺序来写,先从简单的开始。 本博客持续更新中… 两数之和(原第1题) package main import ( "fmt" ) func main() { nums := []int{2, 3, 4, 5} target := 9 res := twoSum(num...原创 2019-08-20 11:53:07 · 755 阅读 · 0 评论