三月八日学习

用markdown写文档

今天上午学了go的函数,变量,结构体,切片,还有今天问kimi的问题是我在学习中提出的问题

函数的闭包

  • 学习了函数的匿名函数的用法

函数的结构体

  • 在学习过程中我了解了type 关键字和struct关键字的用法,

  • type关键字:声明一个新的类型;
    struct关键字:用于声明结构体的类型

  • 结构体是什么呢,其实就是一种数据类型,里面的数据的类型可以相同也可以是不同的,比如
    在这里插入图片描述
    这里面有字符串类型也有整数类型

今天学习中问题:

Go切片容量和长度有什么区别?

长度(Length)

  • 定义:切片的长度是指切片中当前存储的元素数量。
  • 获取方式:可以通过内置函数 len() 获取切片的长度。
  • 动态变化:长度是动态变化的,当你向切片中添加或删除元素时,长度会相应地增加或减少。
s := []int{1, 2, 3}
fmt.Println(len(s)) // 输出:3,因为切片中有3个元素

容量(Capacity)

  • 定义:切片的容量是指切片的底层数组能够容纳的元素数量,即切片可以扩展到的最大长度而不需要重新分配内存。
  • 获取方式:可以通过内置函数 cap() 获取切片的容量。
  • 静态属性:容量在切片被创建时确定,并且在切片的生命周期内保持不变,除非通过重新分配底层数组(如使用 copy() 函数或直接操作切片)来改变。
s := make([]int, 3, 5)
fmt.Println(cap(s)) // 输出:5,因为切片的容量是5

区别

  • 概念上:长度是切片中实际存储的元素数量,而容量是切片能够存储的最大元素数量。
  • 操作影响:添加元素到切片中会增加长度,如果长度超过当前容量,则触发扩容,这可能涉及到重新分配底层数组。删除元素会减少长度,但不会减少容量。
  • 性能考虑:理解长度和容量对于优化切片操作的性能非常重要,例如,避免频繁的扩容操作可以提高程序的运行效率。

然后是下午学习的内容了,下午主要学了快乐数和两数之和

  • 快乐数,我今天只看了两个版本的
class Solution:
    def isHappy(self, n: int) -> bool:        
        record = set()

        while True:
            n = self.get_sum(n)
            if n == 1:
                return True
            
            # 如果中间结果重复出现,说明陷入死循环了,该数不是快乐数
            if n in record:
                return False
            else:
                record.add(n)

    def get_sum(self,n: int) -> int: 
        new_num = 0
        while n:
            n, r = divmod(n, 10)
            new_num += r ** 2
        return new_num

1.第一个问题:def isHappy(self, n: int) -> bool:是什么意思?

  • self:这是 Python 类方法中的一个特殊参数,表示类的实例(对象)。它用于访问类的属性和其他方法。在类方法中,self 是第一个参数,且必须显式地写出来。它允许你在方法内部引用类的其他成员。
  • n: int:这是函数的第二个参数,表示需要传入一个整数 n。int 是类型注解(Type Hint),表示这个参数应该是整数类型。类型注解在 Python 中是可选的,但它可以帮助代码的可读性,并且可以被一些工具(如类型检查器)用于静态类型检查。
  • -> int
    这是函数的返回值类型注解,表示这个函数返回一个整数类型的结果。-> int 是可选的,但它同样有助于提高代码的可读性,并且可以让静态类型检查工具(如 mypy)更好地检查代码。

从这个代码中我学到了

n = self.get_sum(n) 的self,在面向对象编程中,self关键字代表类的实例,就是在调用get_sum这个函数

然后下午又学了点数据库的loop循环

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值