首页 > 其他分享 >【5】复杂数据类型

【5】复杂数据类型

时间:2024-10-30 12:45:39浏览次数:3  
标签:复杂 int arrayInt 数据类型 数组 Printf main fmt

文章目录

一、数组与切片

(一)数组

  1. 定义数组与遍历
package main

import "fmt"

func main() {
   
    var arrayInt [3]int // 定义一个长度为 3 的数组
    arrayInt[0] = 1
    fmt.Printf("%#v\n", arrayInt)

    // 遍历数组,并且打印元素《常用方式》
    for idx, val := range arrayInt {
   
       fmt.Printf("arrayInt[%d] = %d\n", idx, val)
    }

    for i := 0; i < len(arrayInt); i++ {
   
       fmt.Printf("arrayInt[%d] = %d\n", i, arrayInt[i])
    }
}
  1. 数组在内存中的布局
package main

import "fmt"

func main() {
   
    var arrayInt [6]int // 定义一个长度为 6 的数组
    arrayInt[0] = 1
    // arrayInt addr is: 0x1400012e000
    // arrayInt[0] addr is: 0x1400012e000
    // 数组的地址就是数组中第一个元素的地址
    fmt.Printf("arrayInt addr is: %p\n", &arrayInt)
    fmt.Printf("arrayInt[0] addr is: %p\n", &arrayInt[0])
    // arrayInt[1] addr is: 0x1400012e008 / 第二个元素的地址等于第一个元素地址加上 int 字节数
    fmt.Printf("arrayInt[1] addr is: %p\n", &arrayInt[1])
}
  1. 数组的几种定义方式
arrayInt := [3]int{
   }       // 使用类型推导:长度,类型,默认值
arrayInt := [...]int{
   1, 2, 3} // 使用类型推导:长度省略,类型,默认值
arrayInt := [...]int{
   3: 2, 0: 1} // 使用类型推导:长度省略,类型,默认值,长度推导最大长度
fmt.Printf("arrayInt: %v\n", arrayInt)
  1. 数组的注意事项重点
package main

func main() {
   
    // 1.数组是相同类型的组合,长度和类型确定后就不能再进行动态变化
    // arrayInt := [3]int{}
    // arrayInt[3] = 1 // Invalid array index '3' (out of bounds for the 3-element array)
    // 2.区分数组与切片
    // sliceStr := []string{"hello", "world"}    // 切片
    // arrayStr := [...]string{"hello", "world"} // 数组
    // fmt.Printf("sliceStr type:%T, arrayStr type:%T\n", sliceStr, arrayStr)
    // 3.数组中的元素可以是任意类型,可以是值类型或者引用类型,但是不能混用
    // arrayInt := [...]int{1, "2"} // '"2"' (type string) cannot be represented by the type int
    // 4.使用数组的过程:1)声明数组并开辟空间;2)给数组各个位置赋值,默认零值;3)使用数组
    // 5.golang 中的数组属于值类型,在默认情况下属于值传递,因此会进行值拷贝,数组间不会相互影响:不同于 python
    // 6.数组的长度是数组定义的一部分,传递参数时必须考虑数组的长度
}
  1. 数组的一些练习
// 输出 26 个字母
package main

import "fmt"

func main() {
   
    byteArray := [26]byte{
   }
    byteArray[0] = byte('A')

    for i := 0; i < 26; i++ {
   
       if i > 0 {
   
          byteArray[i] = byteArray[i-1] + 1
       }
       fmt.Printf("%c", byteArray[i])
    }
}
// 求一个数组的最大值
package main

标签:复杂,int,arrayInt,数据类型,数组,Printf,main,fmt
From: https://blog.csdn.net/Grit_my/article/details/143361538

相关文章

  • 复杂度分析,数据结构的数组与链表
    复杂度分析,数据结构的数组与链表参考书籍:Hello算法目录复杂度分析,数据结构的数组与链表复杂度分析时间复杂度空间复杂度数据结构数组与链表数组链表列表复杂度分析复杂度分析是用来判断一个算法效率的手段,执行时所需的时间和空间资源则是正好对应时间和空间复杂度。考虑到执......
  • C#基础数据类型
    C# 数据类型在C#中,变量分为以下几种类型:值类型(Valuetypes)引用类型(Referencetypes)指针类型(Pointertypes)值类型(Valuetypes)值类型变量可以直接分配给一个值。它们是从类 System.ValueType 中派生的。值类型直接包含数据。比如 int、char、float,它们分别存储数字......
  • 高性能 ArkUI 应用开发:复杂 UI 场景中的内存管理与 XML 优化
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。在开发高性能ArkUI应用时,尤其是涉及......
  • java数据类型四舍五入保留小数位
    在java处理int、float、double、long等整形或者小数时,如果需要转为Bigdecimal时,一定要先转为字符串,然后再转为Bigdecimal。否则可能出现精度丢失的问题。在对float,double四舍五入时,不要直接只用以下方法,如果用了,可以试下2000.225保留两位小数。不管用java还是python计算出来都会......
  • C/C++ 中有哪些基本数据类型?它们的存储大小和取值范围是多少?
      1.整型类型int存储大小:4字节(32位)取值范围:有符号(signedint):-2^(31)到2^(31)-1(即-2,147,483,648到2,147,483,647)short存储大小:2字节(16位)取值范围:有符号(signedshort):-2^(15)到2^(15)-1(即-32,768到32,767)long存储大小:通常为4字......
  • GaussDB数据类型介绍
    @目录一、GaussDB数据库二、数据类型概念及特点三、常用数据类型1、常用字符串类型介绍2、布尔类型3、数值类型4、日期/时间类型四、数据类型选择建议一、GaussDB数据库GaussDB是华为基于openGauss自研生态推出的云化企业级分布式关系型数据库,它支持多种数据类型,包括数值、字......
  • GaussDB数据类型转换介绍
    @目录一、数据类型转换场景二、数据类型转换及示例1、cast(valueAStype)2、to_date(text)3、to_date(text,format)4、to_char(datetime,format)5、to_char(string)6、CASE表达式三、小结一、数据类型转换场景数据类型转换在实际应用中非常常见。GaussDB作为一款企业级分布......
  • JS中const对于复杂类型变量和普通类型变量的区别详解
    转自于:https://www.jb51.net/javascript/303802q78.htmconst关键字是让什么不能变?const实际上的不能变并不是说变量的值不能变,而是初始化后变量所指向在栈中的内存上的数据不能变我们先切记这一点先,看下文!!!js中变量的两种类型js中的变量类型可以分为两种:简单数据类型Numb......
  • 【C/C++】2.函数传入复杂类型实例时,传入值参数和引用参数的区别
    1.值参数传递(PassbyValue)原理:传入参数时会拷贝一份对象副本。优点:副本在函数内部可随意修改,不会影响原始数据。缺点:对于复杂类型,拷贝对象会消耗更多内存和性能。适用场景:函数只需读取少量数据,且无需修改原对象时,可以考虑值传递。voidprocessData(MyClassobj){......
  • C++数据类型
    数据类型C++规定在创建一个变量或常量时,必须要指定出相应的数据类型,否则无法给变量分配内存。一、整型作用:整型变量表示的是整数类型的数据。语法:数据类型  变量名=变量初始值;        int  a=10;数据类型存在的意义:给变量分配合适的内存空间......