首页 > 其他分享 >Go Lang中的数据类型

Go Lang中的数据类型

时间:2023-12-28 17:13:34浏览次数:28  
标签:Lang string fmt 数据类型 Println exchangeStr Go strB strA

Go的数据类型可以分为,基础数据类型和派生数据类型 基础数据类型
  • 数值型(int,uint,float)
  • 字符型(bype)
  • 布尔型(bool)
  • 字符串(string)
派生类型
  • 指针
  • 数组
  • 结构体
  • 管道
  • 函数
  • 切片
  • 接口
  • map
基础类型的申明代码
    var i int=1;
    var s string="hello";
    var b bool = true;
    var bt byte=104;//对应字母 h
    fmt.Println("基础类型", i, s, b, bt)
    fmt.Println(string(bt))
    
    输出结果
    基础类型 1 hello true 104
    h
指针的申明及使用

    var strA,strB = "strA", "strB";
    fmt.Println("==================================== ") ;
    fmt.Println("strA = ", strA) ;
    fmt.Println("strB = ", strB) ;
    exchangeStr(strA,strB);

    
    fmt.Println("==== after exchangeStr ==== ") ;
    fmt.Println("strA = ", strA) ;
    fmt.Println("strB = ", strB) ;


    fmt.Println("strA = ", &strA) ;
    fmt.Println("strB = ", &strB) ;
    exchangeStr_point(&strA,&strB);

    fmt.Println("==== after exchangeStr_point ==== ") ;
    fmt.Println("strA = ", strA) ;
    fmt.Println("strB = ", strB) ;
    fmt.Println("==================================== ") ;


func exchangeStr(strA string,strB string){
    var strTemp string;
    strTemp=strA;
    strA=strB;
    strB=strTemp;
    
    fmt.Println("=========inside exchangeStr=========")
    fmt.Println("strA = ", strA) ;
    fmt.Println("strB = ", strB) ;
}

func exchangeStr_point(strA *string, strB *string){
    var strTemp string;
    strTemp=*strA;
    *strA=*strB;
    *strB=strTemp;
    
    fmt.Println("=========inside exchangeStr_point=========")
    fmt.Println("strA = ", *strA) ;
    fmt.Println("strB = ", *strB) ;
}

输出结果:
==================================== 
strA =  strA
strB =  strB
=========inside exchangeStr=========
strA =  strB
strB =  strA
==== after exchangeStr ====
strA =  strA
strB =  strB
strA =  0xc00001e070
strB =  0xc00001e080
=========inside exchangeStr_point=========
strA =  strB
strB =  strA
==== after exchangeStr_point ====
strA =  strB
strB =  strA
====================================
可以看到通过指针可以实现参数的值传递  
数组
 
    var array [5]int
    var s string="hello";
    array[0] = 10
    array[1] = 20
    array[2] = 30
    array[3] = 40
    array[4] = 50
    fmt.Println("遍历array")
    for i := 0; i < len(array); i++ {
        fmt.Println(array[i])
    }

    fmt.Println("遍历string")
    for i := 0;i<len(s);i++ {
        //s[i]为bype类型,输出ASCII码
        fmt.Println(s[i]);
        fmt.Println(string(s[i]));
    }
    
结果:
遍历array
10
20
30
40
50
遍历string
104
h
101
e
108
l
108
l
111
o
通过代码可以看到,string和数组很想,之后可以看一下两个类型的底层结构   结构体
package main

import "fmt"

type Person struct {
  name string
  age int
  gender string
}

func main() {
  // 创建一个 Person 结构体实例
  p := Person{"John", 20, "male"}

  // 访问结构体实例的字段
  fmt.Println(p.name)
  fmt.Println(p.age)
  fmt.Println(p.gender)

  // 修改结构体实例的字段
  p.name = "Jane"
  p.age = 21
  p.gender = "female"

  // 再次访问结构体实例的字段
  fmt.Println(p.name)
  fmt.Println(p.age)
  fmt.Println(p.gender)
}
结果:
John
20
male
Jane
21
female
管道
    // 创建一个整数类型的管道
    ch := make(chan int)

    // 启动一个发送数据的 goroutine
    go func() {
        ch <- 42 // 将数据 42 发送到管道
        ch <- 43 // 将数据 43 发送到管道
    }()
    // go func() {
    //  ch <- 43 // 将数据 43 发送到管道
    // }()
    // 从管道中接收数据
    value := <-ch
    fmt.Println(value) // 输出 42
    value = <-ch
    fmt.Println(value) // 输出 43
日期
除了以上这些类型,一般我们常用的还有日期 可以发现,这里没有日期类型,Go Lang的日期被定义在系统函数里
    import(
    "fmt"
    "time"
)
    
    currentTime := time.Now();
    fmt.Println(currentTime);
    fmt.Printf("currentTime的类型 = %T", currentTime);

输出结果
2023-12-24 23:36:09.8925804 +0800 CST m=+0.005935301
currentTime的类型 = time.Time
其他数据类型在后续边摸索边使用

标签:Lang,string,fmt,数据类型,Println,exchangeStr,Go,strB,strA
From: https://www.cnblogs.com/terry841119/p/17933108.html

相关文章

  • [转发] Go pprof内存指标含义备忘录
    原文链接Gopprof内存指标含义备忘录最近组内一些Go服务碰到内存相关的问题,所以今天抽时间看了下Gopprof内存指标的含义,为后续查问题做准备。内容主要来自于Go代码中对这些字段的注释,加自己的理解。理解不对的地方欢迎指正。//https://github.com/golang/go/blob/master/src......
  • django 网页引用,路由分发
    1,网页引用1.1HelloWorld目录底下创建templates目录并建立runoob.html文件1.2修改HelloWorld/settings.py,修改TEMPLATES中的DIRS为 [os.path.join(BASE_DIR,'templates')]  2,路由分发#总路由fromapp01importurlsasapp01_urlsfromapp02importurlsas......
  • django 下拉列表
    1,html原生代码点击跳转<from><selectοnchange="window.location=this.value;"><optionvalue="a.html">用户管理</option><optionvalue="b.html">用户</option></select></form>注意onchange部分,这样即......
  • 【golang】怎么在Go语言中实现锁机制
    Go语言的锁在Go语言中,最常用的锁是互斥锁(Mutex)。互斥锁是一种特殊的二进制信号量,用于控制对共享资源的访问。Go语言通过标准库中的"sync"包提供了互斥锁的功能。互斥锁的类型定义如下:type Mutex struct {    state int32    sema  uint32}其中state字段用于记......
  • 【Golang】Golang的跳一跳
    一、基本概念在Go语言中,代码跳转是指从一个位置跳转到另一个位置。一般而言,我们可以通过函数调用进行代码跳转,也可以通过goto语句进行跳转。不同的跳转方式有不同的适用场景。二、函数调用函数是Go语言中的基本构建块之一。调用函数时,程序的执行流程会跳转到被调用的函数中,并在......
  • 【golang】Go语言实现数据转发功能
    首先,我们需要考虑数据实体的格式。在许多情况下,使用JSON格式最为方便。Go语言中有一个标准库“encoding/json”可以提供JSON编解码功能。我们可以使用它来将我们的数据序列化为JSON格式,并将其发送到目标组件中。接下来,我们需要选择一种合适的网络协议来实现数据传输。常用的协议......
  • 【golang】Go语言中interface类型怎么使用
    1、Go语言中interface类型的定义 在Go语言中,interface类型是一个抽象的类型,它是一组方法签名的集合,只要某个类型实现了这些方法,它就属于该interface类型。在Go语言中定义一个interface类型的方法,需要使用interface关键字。下面是interface类型的完整定义方式:type interfac......
  • go-使用通道模拟抢到活动
    packagemainimport( "fmt" "gorm.io/driver/mysql" "gorm.io/gorm" "math/rand" "sync" "time")//用户结构体typeUserstruct{ Idint Namestring Telstring Addressstring}......
  • 【Django进阶】djangorestframework-jwt使用
    简介Jsonwebtoken(JWT),是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资......
  • MongoDB Oplogs 到底都记录了什么 与 智者老冯
    最近董宇辉的事情,让我意识到,如果光一味的搞技术,那么对于人生和生活是不完整的,后序在撰写一些技术文章的时候,会带有一些对于当前热点事件的一些感触和反思,也希望能找到一些有同样想法的人,终究人生的道路是孤独的,如果在孤独中能找到一些人能对你有一些共鸣,那是一件幸福的事情。这里先......