zoukankan      html  css  js  c++  java
  • golang学习笔记---类型

    小数类型/浮点型

    // 演示精度丢失:尾数部分可能丢失 
    var num3 float32 = -123.0000901
    var num4 float64 = -123.0000901
    fmt.Println("num3 = ", num3, "num4 = ", num4)

    // Golang的浮点型默认声明为float64
        var num5 = 1.1
        fmt.Printf("num5 的数据类型是 %T 
    ", num5)
    
        // 浮点型声明:十进制形式 如:5.12   .123
        num6 := 5.12
        num7 := .123    // =>0.123
        fmt.Println("num6 = ", num6, "num7 = ", num7)
    
        // 浮点型声明:科学计数法形式,e与E一样
        num8 := 5.1234e2    // =>5.1234 * 10的2次方
        num9 := 5.1234E-2    // =>5.1234 / 10的2次方
        fmt.Println("num8 = ", num8, "num9 = ", num9)

     字符(char)

    // 演示Golang中字符类型的使用
    func main() {
    
        var c1 byte = 'a'
        var c2 byte = '0'
    
        // 当我们直接输出byte值,就是输出了对应字符的ASCII码值
        // a==> 97    0==>48
        fmt.Println("c1 = ", c1)
        fmt.Println("c2 = ", c2)
        // 如果我们希望输出对应的字符,需要使用格式化输出
        fmt.Printf("c1 =  %c c2 =  %c 
    ", c1, c2)
    
        // var c3 byte = ''
        // 会报错:./main.go:19:16: constant 40644 overflows byte
        // 因为byte范围是0~255,所以换一个范围大的类型即可
        var c3 int = ''
        fmt.Printf("c3 =  %c c3对应的ASCII码值 = %d 
    ", c3, c3)
    }

     

     // 可以直接给某个变量赋一个数字,然后按格式输出%c,会输出数字对应的Unicode字符
        var c4 int = 22269    //22269->国
        fmt.Printf("c4 =  %c 
    ", c4)
    
        //字符类型可以直接进行运算,相当于一个整数,运算时按ASCII码值运算
        var n1 = 10 + 'a'    //10 + 97 = 107
        fmt.Println("n1 = ", n1)

    string

     

    package main
    import (
        "fmt"
    )
    
    // 演示Golang中string类型的使用
    func main() {
        // string的基本使用
        var address string = "北京长城!"
        fmt.Println(address)
    
        // string的注意事项
        var str string = "hello world!!!"
        // str[0] = 'y'    // 报错:./main.go:14:9: cannot assign to str[0]   不能修改
        fmt.Println(str)
    
        //    字符串的两种表现形式(1)双引号,(2)反引号,在esc下面那个键
        str2 := "abc
    abc"    //双引号会转意
        fmt.Println(str2)
    
        // 使用反引号``,以字符串的原生形式输出,包括换行和特殊字符,可以防止攻击
        str3 := `
        package main
        import "fmt"
        
        func main() {
            // golang的变量使用方式1
            // 第一种:指定变量类型,声明后若不赋值,使用默认值
            // int 的默认值是0 其它数据
            var age int
            age = 20
            fmt.Println("age = ", age)
        
            // 第二种:根据值自行判断变量类型(类型推导)
            var num = 10.11
            fmt.Println("num = ", num)
        
            // 第三种:省略var,注意 :=  左侧的变量不应该是已经声明过的,否则编译报错
            // 下面的方式等价于 var name string     name = "tom"
            name := "tom"
            fmt.Println("name = ", name)
        }
        `
        fmt.Println(str3)
    
        // 字符串拼接方式
        var str4 = "hello" + "world"
        str4 += " hhhha!"
        fmt.Println(str4)
    
    }

    基础数据类型与string的转换

    // 演示Golang中基本数据类型转成string
    func main() {
    
        var num1 int = 99
        var num2 float64 = 23.456
        var b bool = true
        var myChar byte = 'h'
        var str string     //空的string
    
        // 使用第一种方式转换    fmt.Sprintf方法
        // 前面的%参数详情:https://studygolang.com/pkgdoc   下的fmt
        str = fmt.Sprintf("%d", num1)
        fmt.Printf("str type is %T str = %q  
    ", str, str)
    
        str = fmt.Sprintf("%f", num2)
        fmt.Printf("str type is %T str = %q 
    ", str, str)
    
        str = fmt.Sprintf("%t", b)
        fmt.Printf("str type is %T str = %q  
    ", str, str)
    
        str = fmt.Sprintf("%c", myChar)
        fmt.Printf("str type is %T str = %q  
    ", str, str)
    }
    

    使用strconv包

    1) 基础数据类型转string

    package main
    import (
        "fmt"
        "strconv"
    )
    
    // 演示Golang中基本数据类型转成string
    func main() {
    
        // 使用第二种方式转换    使用  strconv  包的函数
        // 详情:https://studygolang.com/pkgdoc   下的strconv
        var num3 int = 99
        var num4 float64 = 23.456
        var b2 bool = true
        var str string     //空的string
    
        str = strconv.FormatInt(int64(num3), 10)
        fmt.Printf("str type is %T str = %q  
    ", str, str)
    
        // 说明: 'f'--格式;10--表示小数位保留10位;64--表示这个小数是float64
        str = strconv.FormatFloat(num4, 'f', 10, 64)
        fmt.Printf("str type is %T str = %q  
    ", str, str)
    
        str = strconv.FormatBool(b2)
        fmt.Printf("str type is %T str = %q  
    ", str, str)
    
    }
    

     

    2) String转基础数据类型

     

    package main
    import (
        "fmt"
        "strconv"
    )
    
    // 演示Golang中string转成基本数据类型
    func main() {
    
        var str string = "true"
        var b bool
        // strconv.ParseBool(str)函数会返回两个值 (value bool, err error)
        // 因为只想获取value,不想获取err,所以使用‘_’忽略
        b, _ = strconv.ParseBool(str)
        fmt.Printf("b type is %T b = %v  
    ", b, b)
    
        var str2 string = "1234560"
        var num1 int64
        //将str2转成10进制的;转成64位的;使用‘_’忽略err
        num1, _ = strconv.ParseInt(str2 ,10, 64)
        fmt.Printf("num1 type is %T num1 = %v  
    ", num1, num1)
        // 因为go默认转换回来的都是64位,不论是int还是float,如果我们不想要那么大,只能自己转
        var num2 int
        num2 = int(num1)
        fmt.Printf("num2 type is %T num2 = %v  
    ", num2, num2)
    
        var str3 string = "123.456"
        var f1 float64
        //将str3转成转成64位的;使用‘_’忽略err
        f1, _ = strconv.ParseFloat(str3 , 64)
        fmt.Printf("f1 type is %T f1 = %v  
    ", f1, f1)
    }

    指针类型

     

     

     注意事项:

     

     

     获取用户端输入:使用 fmt.Scanln()

    package main
    import (
        "fmt"
    )
    
    // 要求:可以从控制台接收用户信息【姓名,年龄,薪水,是否通过考试】
    func main() {
    
        // 声明变量
        var name string
        var age byte
        var sal float32
        var isPass bool
    
        // 方式1:fmt.Scanln()
        fmt.Println("请输入姓名 ")
        // 当程序执行到 fmt.Scanln(&name) 时,程序会停止在这,等待用户输入并回车
        fmt.Scanln(&name)
    
        fmt.Println("请输入年龄 ")
        fmt.Scanln(&age)
    
        fmt.Println("请输入薪水 ")
        fmt.Scanln(&sal)
    
        fmt.Println("请输入是否通过考试 ")
        fmt.Scanln(&isPass)
    
        fmt.Printf("姓名是 %v 
    年龄是 %v 
    薪水是 %v 
    是否通过考试 %v 
     ", name, age, sal, isPass)
    
    }

    使用 fmt.Scanf()

    package main import ( "fmt" ) // 要求:可以从控制台接收用户信息【姓名,年龄,薪水,是否通过考试】func main() { // 声明变量var name stringvar age bytevar sal float32 var isPass bool fmt.Println("请输入您的姓名,年龄,薪水,是否通过考试;使用空格隔开! ") fmt.Scanf("%s %d %f %t",&name, &age, &sal, &isPass ) fmt.Printf("姓名是 %v 年龄是 %v 薪水是 %v 是否通过考试 %v ", name, age, sal, isPass) }

    Type Switch:switch 语句还可以被用于 type-switch 来判断某个 interface 变量中实际指向的变量类型

     

     

    // 可以直接给某个变量赋一个数字,然后按格式输出%c,会输出数字对应的Unicode字符var c4 int = 22269//22269->国 fmt.Printf("c4 = %c ", c4) //字符类型可以直接进行运算,相当于一个整数,运算时按ASCII码值运算var n1 = 10 + 'a'//10 + 97 = 107 fmt.Println("n1 = ", n1)

  • 相关阅读:
    1.2顺序表
    1.1数据结构
    Java 造假数据
    Python造假数据,用这个库
    真香 用这七大Python效率工具
    mybatis 详情
    MySQL 的 INSERT ··· ON DUPLICATE KEY UPDATE
    mysql之case when then 经典用法
    SELECT NOW(),CURDATE(),CURTIME()
    MySQL CONCAT_WS 函数
  • 原文地址:https://www.cnblogs.com/saryli/p/13539089.html
Copyright © 2011-2022 走看看