Go基础-go的基本类型,复合类型,接口和方法

1. 基本

目录

1. 基本类型

(1) 整型(int/uint)

(2) 浮点型(float)

(3) 布尔型(bool)

(4) 字符串(string)

2. 复合类型

(1) 数组(array)

(2) 切片(slice)

(3) 映射(map)

(4) 结构体(struct)

(5) 通道(channel)

(6) 指针(pointer)

3. 接口与方法

(1) 接口(interface)

(2) 方法(method)

4. 对比


类型

(1) 整型(int/uint
  • 分类
    • int8, int16, int32, int64(有符号)
    • uint8(即 byte), uint16, uint32, uint64(无符号)
    • int/uint:平台相关(32位或64位)
  • 示例
    var a int = -42
    var b uint64 = 18446744073709551615
(2) 浮点型(float
  • 分类
    • float32(单精度,约6位小数)
    • float64(双精度,默认,约15位小数)
  • 示例
    var pi float64 = 3.141592653589793

(3) 布尔型(bool
  • truefalse
  • 示例
    var isActive bool = true

(4) 字符串(string
  • 特性
    • 不可变字节序列(默认UTF-8编码)
    • 支持切片操作(如 s[0:5](索引0~4))
  • 示例
    var s string = "Hello, Go"

2. 复合类型

(1) 数组(array
  • 定义:固定长度、同类型元素的集合
  • 示例
    var arr [3]int = [3]int{1, 2, 3} // 长度是类型的一部分
(2) 切片(slice
  • 特性
    • 动态数组(底层引用数组)
    • 含长度(len)和容量(cap
  • 示例
    s := []int{1, 2, 3} // 字面量
    s = append(s, 4) // 追加元素 
    sub := s[1:3] // 切片操作
  • 切片与数组

    • 切片传递时修改会影响底层数组(共享引用)。
    • 数组是值类型,赋值会复制全部元素。

(3) 映射(map
  • 定义:键值对集合(无序)
  • 示例
    m := map[string]int{"a": 1, "b": 2} 
    val, exists := m["a"] // 检查键是否存在

(4) 结构体(struct
  • 特性:自定义聚合类型
  • 示例
    type User struct { 
        Name string 
        Age int 
    } 
    u := User{Name: "Alice", Age: 30}
(5) 通道(channel
  • 用途:协程间通信(线程安全)
  • 分类
    • 无缓冲(同步):ch := make(chan int)
    • 有缓冲(异步):ch := make(chan int, 10)
  • 示例
    ch := make(chan int)          // 1. 创建一个无缓冲的 int 型通道
    go func() { ch <- 42 }()      // 2. 启动协程,向通道发送数据 42
    value := <-ch                 // 3. 从通道接收数据,并赋值给 value
    fmt.Println(value)            // 输出: 42
  • 通道关闭

    • 关闭后仍可读取剩余数据,v, ok := <-chokfalse表示已关闭。

(6) 指针(pointer
  • 作用:间接引用内存地址
  • 示例
    var x int = 10
    p := &x // 取地址
    *p = 20 // 解引用修改

3. 接口与方法

(1) 接口(interface
  • 定义:方法签名的集合(隐式实现)
  • 示例
    type Writer interface { 
        Write([]byte) (int, error) 
    } 
    
    func (f File) Write(data []byte) (int, error) { // 实现接口
     ... 
    }
  • 接口与nil

    • 接口变量为nil仅当类型和值均为nil
      var w Writer // w == nil 
      var f *File
      w = f // w != nil(类型为*File,值为nil)

(2) 方法(method
  • 特性:绑定到类型的函数(值或指针接收者)
  • 示例:
    func main() {
        // 初始化一个 Circle
        c := Circle{Radius: 2.0}
    
        // 值接收者方法调用(无论 c 是值还是指针均可调用)
        area := c.Area()           // 等价于 (&c).Area()
        fmt.Println(area)          // 输出: 12.566...
    
        // 指针接收者方法调用(无论 c 是值还是指针均可调用)
        c.Scale(2.0)               // 等价于 (&c).Scale(2.0)
        fmt.Println(c.Radius)       // 输出: 4.0(原结构体被修改)
    }

  • 值接收者 vs 指针接收者
    特性值接收者(func (c Circle)指针接收者(func (c *Circle)
    是否修改原结构体否(操作的是副本)是(直接操作原结构体)
    调用时的隐式转换支持(可通过值或指针调用)支持(可通过值或指针调用)
    典型用途计算类方法(如 Area()修改类方法(如 Scale()

4. 对比

类型可变性线程安全典型用途
int可变是(非共享)数值计算
string不可变文本处理
slice可变动态集合
map可变键值查询
channel可变协程通信
struct字段可变取决于使用数据聚合
interface动态类型多态设计

为了在Windows安装ADB工具,你可以按照以下步骤进行操作: 1. 首先,下载ADB工具包并解压缩到你自定义的安装目录。你可以选择将其解压缩到任何你喜欢的位置。 2. 打开运行窗口,可以通过按下Win+R键来快速打开。在运行窗口中输入"sysdm.cpl"并按下回车键。 3. 在系统属性窗口中,选择"高级"选项卡,然后点击"环境变量"按钮。 4. 在环境变量窗口中,选择"系统变量"部分,并找到名为"Path"的变量。点击"编辑"按钮。 5. 在编辑环境变量窗口中,点击"新建"按钮,并将ADB工具的安装路径添加到新建的路径中。确保路径正确无误后,点击"确定"按钮。 6. 返回到桌面,打开命令提示符窗口。你可以通过按下Win+R键,然后输入"cmd"并按下回车键来快速打开命令提示符窗口。 7. 在命令提示符窗口中,输入"adb version"命令来验证ADB工具是否成功安装。如果显示版本信息,则表示安装成功。 这样,你就成功在Windows安装ADB工具。你可以使用ADB工具来执行各种操作,如枚举设备、进入/退出ADB终端、文件传输、运行命令、查看系统日志等。具体的操作方法可以参考ADB工具的官方文档或其他相关教程。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [windows环境安装adb驱动](https://blog.csdn.net/zx54633089/article/details/128533343)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Windows安装使用ADB简单易懂教程](https://blog.csdn.net/m0_37777700/article/details/129836351)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值