go基础2-基本数据类型

 go语言有丰富的数据类型,除了整型   浮点型   字符串  外 还有  数组  切片 机构体     函数 map   通道(channel)       //切片像php的数组

 

一  整型  

     整型分为2大类    int8   int16  int32  int64          无符号加u     uint8   uint16  uint32  uint64,

类型    
uint 8           无符号 8位整型  2的8次方-1     (0到255)  
uint16          无符号    65535     
uint32  
uint64  
int8         有符号   8位整型    -2的四次方到2的四次方-1     (-128到127)  
int16  
int32  
int64  

2 特殊整型

      uint        32位操作系统   uint32     64位操作系统  uint64

     int                                     int32                                 int64

      uintptr                             无符号整型    用于存放一个指针

      获取对象长度 函数  len()         

 

2.2 数字字面量语法  number  literals syntax

      go1.13版本之后引入了数字字面量语法     这样便于开发者已二进制,八进制  或十六进制 浮点数的格式定义数字    八进制以0开头   十六进制以 0x开头

     v:=0boo101101 代表二进制 101101  等于十进制45       v=123_456   等于123456       v0o377 代表八进制377  相当于十进制255      搞懂 二进制和十进制换算即可

      占位符          %d    10进制     %b   表示二进制           %o   八进制     %x  十六进制 

  var a int = 10

 

       fmt.Println("%d",a)

       fmt.Printf("%b",a) 

 

三, 浮点型

go支持二种浮点型   float32  float64,     可以使用常量定义最大值    math.MaxFloat32     math.MaxFloat64     浮点占位符   %f

package main
import (
      "fmt"
       "math"    
           
)

func main(){
    
    fmt.Printf("%f",math.Pi)

}

  

四,复数

complex64和complex128     第一次接触这种类型  

var  c1 complex64

c1= 1+2i

var c2  complex128

c2 = 2+3i  //i代表什么  我不知道

fmt.Println(c1)
fmt.Println(c2)

  复数有实部和虚部     complex64的实部和虚部为32位

 

五,布尔值

 go语言的bool 类型   var a  bool

值只有true  和false

注意:布尔值默认为false

          go 不容许将整型强制转换为布尔型

           布尔型无法参与数值运算  也无法与其他类型进行转换

 

六,字符串

var   s  string  = "nihao"                 s2:="你好"

 

字符串转义符      \r   \n  \t    \'     \"    \\

fmt.Println("str :=\" c:\\code\\go.exe\"")

 6.2    多行字符串       用 反引号  ··

 s1  := `第一行

第二行

第三行

`

6.3  字符串 常见操作        len(str)        

                                          +   fmt.Sprintf()   拼接字符串

                                        string.Split      分割

                                        stings.contains     判断是否包含

                                         srings.HasPrefix    strings.HasSuffix            前缀/后缀判断

                                         srings.Index()       strings.LastIndex               子字符串出现的位置

                                       strings.Join(a[]sringm,sep sring)                      join操作

七   byte和rune类型

byte 字符    :组成每个字符串的元素     字符用 单引号 ' '   包起来  例

  var a :='中'

  var  b := 'x'

 go语言的字符有 uint8   代表ascii的一个字符 和 rune   utf-8字符  2种类型  

rune实际是是一个 int32

//遍历字符串

func traversalStirng(){

  s:="hello沙雕";

  for i :=0; i < len(s);i++{

    fmt.Printf("%v(%c)",s[i],s[i])

  }//  无法打印汉字出来

     fmt.Println()

     for _,r  :=  range s{

    fmt.Printf("%v(%c)",r,r)

  }

}//输出 104(h) 101(e) 108(l) 108(l) 111(o) 27801(沙) 27827(雕)

因为utf8 中文汉字是由3-4个字符组成   

字符串底层是一个 byte数组   所以可以和   []byte  类型相互转换

 

7.1     修改字符串

要修改字符串  先要将其转换为  []rune    或    []byte   完成后再转换为string       

func changeString(){

  s1 :=  "big"

  byteS1 := []byte(s1)

  byteS1[0] = 'p'

  fmt.PrintLn(stirng(byteS1))

  

  s2:= "红萝卜"

  runeS2 :=  []rune(s2)

  runeS2[0]  = '白'

  fmt.PrintLn(string(runeS2))

}

 

八  类型转换

  go只有强制类型转换  没有隐身类型转换         

语法如下   

T(表达式)       T表示要转换的类型             表达式包括变量  复杂算术 和函数返回值等

math.Sqrt()      计算直角三角形的斜边长

该函数接收的参数为 float64  

func  spqtDemo(){

  var a,b = 3,4

      var c int

       c = int(math.Sqrt(float64(a*a + b*b)))

}

 

//每天一篇的进度   赖下了一篇 要努力   

 

posted @ 2021-03-15 18:36  fly_fly_fly#  阅读(52)  评论(0编辑  收藏  举报